本文为大家分享了Spring4的下载组件,供大家参考,具体内容如下
package com.hnust.common.controller; import org.apache.commons.io.FileUtils; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RestController; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; /** * Created by Heweipo on 2016/5/27. * <p> * 下载通用控制器 */ @RestController public class DownloadController extends BaseController { /** * 下载文件通用方法 * * @param file 文件对象 * @return 文件字节流 */ public ResponseEntity<byte[]> export(File file) { return export(file.getName(), file); } /** * 下载文件通用方法 * * @param fileName 文件名称 * @param file 文件对象 * @return 文件字节流 */ public ResponseEntity<byte[]> export(String fileName, File file) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData("attachment", encodeFileName(fileName)); ResponseEntity<byte[]> rs = null; try { // 这里不能使用 HttpStatus.CREATED 201 是因为 IE Edge 无法识别,但是Firefox chrome 没问题 rs = new ResponseEntity<>(FileUtils.readFileToByteArray(file), headers, HttpStatus.OK); } catch (IOException e) { //throw new CommonException(ResponseStatusEnum.FILE_ERROR, e); } return rs; } /** * 下载文件的名称,这个是在浏览器那里显示的名称 * * @param fileName 文件名称 * @return 加码的文件名称 * <p> * IE * Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko * <p> * Edge * Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586 * <p> * Firefox * Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0 * <p> * Chrome * Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 */ private String encodeFileName(String fileName) { String name = fileName; try { String agent = request.getHeader("USER-AGENT").toLowerCase(); if (null != agent && (agent.contains("msie") || agent.contains("edge"))) { // IE edge name = URLEncoder.encode(fileName, "UTF-8"); } else if (agent.contains("safari") || agent.contains("chrome") || agent.contains("firefox")) { // safari chrome firefox name = new String(fileName.getBytes("UTF-8"), "iso-8859-1"); } else { // IE10 IE11 name = URLEncoder.encode(fileName, "UTF-8"); } // 把加号还原为空格(IE Edge 有问题) name = name.replace("+", "%20"); } catch (UnsupportedEncodingException e) { //throw new CommonException(ResponseStatusEnum.FAILURE, e); } return name; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍java webservice上传下载文件代码分享,包括了java webservice上传下载文件代码分享的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java webservice上传下载文件代码,供大家参考,具体内容如下 1、新建动态web工程youmeFileServer,新建包com,里面新建类FileProgress 2、发布测试webservice(ec
本文向大家介绍兼容ie6浏览器的php下载文件代码分享,包括了兼容ie6浏览器的php下载文件代码分享的使用技巧和注意事项,需要的朋友参考一下 PS:这段代码在win系统下跑没有问题,枫哥亲测可用.如果用的是linux或是其他系统,要要诸位自行测试下啦. 这个代码是枫哥从国外的一个站点上找到的,亲测可用.度娘出来的结果,你懂的.因此在博客上共享出来,希望对大家有用.国外的站,地址忘了,没有办法放出
本文向大家介绍Java Web端程序实现文件下载的方法分享,包括了Java Web端程序实现文件下载的方法分享的使用技巧和注意事项,需要的朋友参考一下 Web文件下载有两种,一种是文件在网站目录下,在浏览器中直接输入文件路径即可下载,如http://www.xxx.com/file.zip。另外一种是文件不在网站目录下或者文件是动态生成的(导出报表或者导出excel等),这种情况需要通过respo
本文向大家介绍Python实现的下载8000首儿歌的代码分享,包括了Python实现的下载8000首儿歌的代码分享的使用技巧和注意事项,需要的朋友参考一下 下载8000首儿歌的python的代码: 有需要的可以参考继续修改。
本文向大家介绍Angular实现下载安装包的功能代码分享,包括了Angular实现下载安装包的功能代码分享的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接给大家贴代码了,具体代码如下所示: PS:下面在给大家分享一段代码关于angularJS实现锚点跳转实例 总结 以上所述是小编给大家介绍的Angular实现下载安装包的功能代码分享,希望对大家有所帮助,如果大家有任何疑问请给我留言,小
本文向大家介绍Java Servlet简单实例分享(文件上传下载demo),包括了Java Servlet简单实例分享(文件上传下载demo)的使用技巧和注意事项,需要的朋友参考一下 项目结构 1.简单实例 ShowServlet.java input.jsp 2.文件上传实例 UploadServlet.java fileupload.jsp 3.文件下载实例 DownloadServlet.j
主要内容:文件下载在实际的项目开发中,文件的上传和下载可以说是最常用的功能之一,例如图片的上传与下载、邮件附件的上传和下载等。在《 Spring MVC 文件上传》一节中我们介绍了文件的上传,本节我们将对 Spring MVC 中的文件下载功能进行讲解。 文件下载 文件下载的含义十分简单,它指的就是将服务器中的文件下载到本机上。 下面我们就结合一个实例,来演示下如何在 Spring MVC 中实现文件的下载功能,可
在事件分析报告中,可对已生成的报告进行导出,导出按钮位置如图。 每日导出次数根据版本不同有所限制,剩余次数会在导出确认框中进行提示。 开通全量导出的用户,可在导出时选择是否全量导出。 导出后的报告,可在管理-分析云设置-分析云下载中进行下载,下载次数无限制。