• springmvc通过ResponseEntity实现文件下载


    在springmvc中实现文件下载一般都是借助HttpServletResponse的getOutputStream()方法实现的,除此之外还可以通过ResponseEntity实现:

     	@RequestMapping(value = "/downloadxx.do", method = RequestMethod.GET)
        public ResponseEntity<InputStreamResource> downloadxx(HttpServletRequest request, HttpServletResponse response) throws IOException {
            String filePath = "/download/xx.zip";
            ClassPathResource file = new ClassPathResource(filePath);
            // 文件名编码,解决乱码问题
            String fileName = file.getFilename();
            // 解决文件名乱码问题
            // String fileName = URLEncoder.encode(file.getFilename(), StandardCharsets.UTF_8.toString());
            String userAgentString = request.getHeader("User-Agent");
            String browser = UserAgent.parseUserAgentString(userAgentString).getBrowser().getGroup().getName();
            if (browser.equals("Chrome") || browser.equals("Internet Exploer") || browser.equals("Safari")) {
                fileName = URLEncoder.encode(fileName, "utf-8").replaceAll("\+", "%20");
            } else {
                fileName = MimeUtility.decodeText(fileName); // encodeWord(fileName);
            }
    
            HttpHeaders headers = new HttpHeaders();
            headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
            headers.add("Content-Disposition", String.format("attachment; filename="%s"", fileName));
            headers.add("Pragma", "no-cache");
            headers.add("Expires", "0");
            return ResponseEntity.ok().headers(headers).contentLength(file.contentLength())
                .contentType(MediaType.parseMediaType("application/octet-stream"))
                .body(new InputStreamResource(file.getInputStream()));
        }
    
    一颗安安静静的小韭菜。文中如果有什么错误,欢迎指出。
  • 相关阅读:
    iis aspx常见错误 没有对“C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files”的写访问权限。
    Windows 下 Apache HTTP Server 安装、配置以及与 Tomcat 的整合(附图)
    Xstudio+Bugzilla
    测试管理工具列表大全
    bitmap详细介绍
    Android学习绘制图形
    PorterDuff.Mode
    盒模型及文本溢出
    css属性继承
    CSS层叠样式
  • 原文地址:https://www.cnblogs.com/c-Ajing/p/13448383.html
Copyright © 2020-2023  润新知