zoukankan      html  css  js  c++  java
  • 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测试

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

  • 相关阅读:
    destoon手机端mobileurl函数增加城市分类参数
    jCarousel,jQuery下的滚动切换传送插件
    jQuery plugin : bgStretcher 背景图片切换效果插件
    jquery图片切换插件jquery.cycle.js参数详解
    destoon 后台管理左侧新增菜单项
    destoon 列表页面增加手动选择排序方式
    jQuery 淡入淡出有png图的时候 ie8下有黑色边框
    java中Array和ArrayList区别
    趣味理解ADO.NET对象模型
    两个datatable的比较
  • 原文地址:https://www.cnblogs.com/gslgb/p/12924618.html
Copyright © 2011-2022 走看看