• 下载一个本地文件出现的小问题


    之前做过下载文件的后台方法

    /**
         * 下载附件
         */
        public void fjxxDown() throws IOException {
            String fjxxno = getPara("fjxxno");
            Record fjxx = LkglService.service.fjxxDown(fjxxno);
            byte[] fjnr = fjxx.get("fjnr");
            
            new ToolFileConsole().loadFileForByte(getResponse(),        //该类 附在文末尾
                    String.valueOf(fjxx.get("fjmc")), "application/x-msdownload", fjnr);
        }

    这里附件是从查出数据库的文件。

    现在改 需求:需要下载一个本地文件(模仿上文)

    后台代码;

    
    

    private static String DOWNLOADPATH = "/files/aq/hj/jshjmb/jsmb.xlsx";  ()


    /**
    * 下载附件 */ public void download() throws IOException { String realPath = super.getRealPath(); String downloadPath = realPath + DOWNLOADPATH; File file = new File(downloadPath); System.out.println(file.exists()); FileInputStream fis = new FileInputStream(file); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] b = new byte[1024]; //不能直接把这个数组放入最后一个参数,不然文件打不开 int len; while ((len = fis.read(b)) != -1) { bos.write(b, 0, len); } fis.close(); bos.close(); byte[] buffer = bos.toByteArray(); new ToolFileConsole().loadFileForByte(getResponse(), String.valueOf("家属会见信息模板文件.xlsx"), "application/x-msdownload", buffer); //String.valueOf("家属会见信息模板文件.xlsx")似乎没发挥用处
          renderNull(); }

    注意:

    new ToolFileConsole().loadFileForByte方法最后一个参数是 byte数组

    我们采取
     ByteArrayOutputStream bos 读出文件。
    然后再 byte[] buffer = bos.toByteArray();  转为byte数组格式。放入最后一个参数位置。


  • 相关阅读:
    进程和线程的区别?什么时候用进程?什么时候用线程?----看到好的复制到自己的园子里哈哈
    HTTPS详细讲解一篇就够了
    MySQL存储过程
    Spring注入全局的HttpServletRequest
    Java进阶必备
    Java8新特性
    java.time包常用类API学习记录
    Maven常用插件
    maven-dependency-versions-check-plugin, Maven 插件查找依赖版本冲突
    Jackson自定义注解
  • 原文地址:https://www.cnblogs.com/yizhizhangBlog/p/9831563.html
Copyright © 2020-2023  润新知