zoukankan      html  css  js  c++  java
  • spring boot中文件下载会把return的内容也写入下载文件

    下载部分的代码

    前台:

    <a  th:href="'/FileDownload?fileDirType=meeting_minute_docx&fileName='+${meetingMsg.meetingId}+'.docx&fileId='+${meetingMsg.meetingId}+'.docx'"  >纪要文件.doc</a>

    后台:

    @ResponseBody
        @RequestMapping("/FileDownload")
        public String  downLoad(HttpServletResponse response,@RequestParam( "fileDirType") String fileDirType,@RequestParam( "fileName") String fileName,@RequestParam( value = "fileId",required = false) String fileId
                               ) throws UnsupportedEncodingException {
    
            System.out.println("fileDirType:"+fileDirType);
            File fileDir=UploadUtils.getDownLoadDirFile(fileDirType);
            String filePath = fileDir.getAbsolutePath();
            File file = new File(filePath + "/" + fileId);
    
            System.out.println(file.getAbsolutePath());
    
            if(file.exists()){ //判断文件父目录是否存在
                response.setContentType("application/plain;charset=UTF-8");
                response.setCharacterEncoding("UTF-8");
                response.setHeader("Content-Disposition", "attachment;fileName=" +   java.net.URLEncoder.encode(fileName,"UTF-8"));
                byte[] buffer = new byte[1024];
                FileInputStream fis = null; //文件输入流
                BufferedInputStream bis = null;
                OutputStream os ; //输出流
                try {
                    os = response.getOutputStream();
                    fis = new FileInputStream(file);
                    bis = new BufferedInputStream(fis);
                    int i = bis.read(buffer);
                    while(i != -1){
                        os.write(buffer, 0, i);
                        i = bis.read(buffer);
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                System.out.println("----------file download---" + fileName);
                try {
                    bis.close();
                    fis.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return "下载成功";
            }
            return "下载失败";
        }

    下载docx文件打开时有一个问题:(点击是后发现可以正常显示,但发现下载后的docx比原文件大了)

     下载txt文件发现多了一个“下”字,也就是说把return中的内容也加进来了。

    把downLoad方法改为void后下载可正常显示,目前还不清楚原因。

  • 相关阅读:
    PHP 正则表达式抓取网页内容。
    FZU 2252 Yu-Gi-Oh!(枚举+贪心)
    Flask 学习篇一: 搭建Python虚拟环境,安装flask,并设计RESTful API。
    Flask 学习笔记
    SSH框架搭建
    javaWeb项目(SSH框架+AJAX+百度地图API+Oracle数据库+MyEclipse+Tomcat)之二 基础Hibernate框架搭建篇
    天梯赛 大区赛 L3-014.周游世界 (Dijkstra)
    Windows 和 Mac 系统下安装git 并上传,修改项目
    浙江工业大学校赛 小M和天平
    Java实现 蓝桥杯VIP 算法训练 非递归(暴力)
  • 原文地址:https://www.cnblogs.com/ssyh/p/12496474.html
Copyright © 2011-2022 走看看