SSM 实现文件下载功能(用postman测试)

  1. 前端只用传文件的路径即可。 如:String path = “D:user est.docx”;
  2. controller
    @Autowired
    FileService fileService;
    /**
    * 前端传文件路径来下载文件
    *
    * @param path 文件路径,如 /guide/appendix.doc
    * @param response
    * @return
    */
    @RequestMapping(value = "/download")
    @ResponseBody
    public CommonReturnType downloadAppendix(@Param("path") String path, HttpServletRequest request, HttpServletResponse response) {
    fileService.downloadFile(path,request,response);
    return CommonReturnType.create(null, "下载完成");
    }
  3. service
    @Override
    public void downloadFile(String path, HttpServletRequest request, HttpServletResponse response) {
    try {
    //String pathTest = "D:\UPC\offer"+"\"+fileName;
    //转码,免得文件名中文乱码(有时候加上反而会乱码)
    // fileName = URLEncoder.encode(fileName,"UTF-8");

    //从路径中获取文件名称,trim:去除字符串前后的空格
    File tempFile = new File(path.trim());
    String filename = tempFile.getName();

    //解决中文文件名乱码
    String userAgent = request.getHeader("User-Agent");
    //IE内核浏览器
    if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
    filename = java.net.URLEncoder.encode(filename, "UTF-8");
    } else {
    // 非IE浏览器的处理:
    filename = new String(filename.getBytes("UTF-8"), "ISO-8859-1");
    }
    //设置文件下载头
    response.setHeader("Content-disposition",String.format("attachment; filename="%s"", filename));
    //设置文件ContentType类型,这样设置,会自动判断下载文件类型
    response.setContentType("multipart/form-data");
    response.setCharacterEncoding("UTF-8");

    InputStream inputStream = new BufferedInputStream(new FileInputStream(new File(path)));
    BufferedOutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
    //创建缓冲区
    byte[] buffer = new byte[1024];
    int length;
    while ((length = inputStream.read(buffer)) != -1) {
    outputStream.write(buffer, 0, length);
    outputStream.flush();
    }
    //关闭流
    inputStream.close();
    outputStream.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
  4. postman测试

     本人完整调试,简单标准实现文件下载

原文地址:https://www.cnblogs.com/gslgb/p/12924618.html