SpringMvc 文件下载 详解



  最近SSM 需要用到文件下载,以前没用过,在百度上找了好久发现没有一篇博客,对于此段代码进行详细讲解,  这里是本人的个人总结,跟大家分享一下!!!不谢

/** * 文件下载 * ResponseEntity:该类实现响应头、文件数据(以字节存储)、状态封装在一起交给浏览器处理以实现浏览器的文件下载 * <p> * ResponseEntity 也可作为响应数据使用  与@ResponseBody 注解功能相似 * 但是ResponseEntity的优先级高于@ResponseBody * 在不是ResponseEntity的情况下才去检查有没有@ResponseBody注解。 * 如果响应类型是ResponseEntity可以不写@ResponseBody注解,写了也没有关系。 * <p> * 简单粗暴的讲,个人理解: *      @ResponseBody可以直接返回Json结果, *      @ResponseEntity不仅可以返回json结果,还可以定义返回的HttpHeaders和HttpStatus */@RequestMapping("/download")public ResponseEntity<byte[]> download(HttpServletRequest request, @RequestParam String filename) throws IOException {    //文件所在位置    String downloadFilePath = request.getSession().getServletContext().getRealPath("/uploud");    //获取要下载的文件    File file = new File(downloadFilePath, filename);

    //http头信息  设置一些约束之类的东西    HttpHeaders headers = new HttpHeaders();    //设置编码  为了解决中文名称乱码问题    String downloadFileName = new String(filename.getBytes("UTF-8"), "iso-8859-1");    //将编码加到http头信息中    headers.setContentDispositionFormData("attachment", downloadFileName);    /**     * MediaType:互联网媒介类型     * contentType:具体请求中的媒体类型信息     * MediaType: 很多常量  多种类型可设置     * APPLICATION_OCTET_STREAM:二进制流数据(如常见的文件下载)     *     * 还有一种常见的:     *          MULTIPART_FORM_DATA: 需要在表单中进行文件上传时,就需要使用该格式     */    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    /**     * FileUtils.readFileToByteArray:读取文件到字节数组     *     * CREATED:201状态码:创建     *     * 简而言之,个人理解:     *      创建/下载 一个根据http头信息约束的 字节数组(文件)     */    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);

}

原文地址:https://www.cnblogs.com/lsy131479/p/9698932.html

时间: 2024-10-29 20:40:25

SpringMvc 文件下载 详解的相关文章

Struts2之struts2文件下载详解

一.学习案例:通过在downloadfile.jsp页面点击"下载文件",查看文件是否可以成功下载. 二.案例分析:struts2文件下载只需简单配置即可. a)先在下载页面(downloadfile.jsp)创建下载文件的链接 <a href="downloadFile">下载文件</a> b)创建action(DownloadFileAction.java) 只需创建一个InputStream类型类型的get方法. 注意:此处方法名规则为

【转】JSch - Java实现的SFTP(文件下载详解篇)

上一篇讲述了使用JSch实现文件上传的功能,这一篇主要讲述一下JSch实现文件下载的功能.并介绍一些SFTP的辅助方法,如cd,ls等. 同样,JSch的文件下载也支持三种传输模式:OVERWRITE, RESUME和APPEND,请参考上篇随笔:JSch - Java实现的SFTP(文件上传详解篇) 文件下载 JSch文件下载是通过调用ChannelSftp对象的get方法来实现的.ChannelSftp中有9个get方法的重载方法: publicvoid get(String src, St

JSch - Java实现的SFTP(文件下载详解篇)(转)

上一篇讲述了使用JSch实现文件上传的功能,这一篇主要讲述一下JSch实现文件下载的功能.并介绍一些SFTP的辅助方法,如cd,ls等. 同样,JSch的文件下载也支持三种传输模式:OVERWRITE, RESUME和APPEND,请参考上篇随笔:JSch - Java实现的SFTP(文件上传详解篇) 文件下载 JSch文件下载是通过调用ChannelSftp对象的get方法来实现的.ChannelSftp中有9个get方法的重载方法: publicvoid get(String src, St

springmvc 配置详解

今天用springmvc搭了一个框架,将步骤以及配置记录下来. jar包网盘地址为:http://yun.baidu.com/share/link?shareid=1109438387&uk=2836507213 项目网盘地址为: http://yun.baidu.com/share/link?shareid=3913316871&uk=2836507213 1.需要导入网盘所有的jar包 2.修改web.xml文件 (加入springmvc的配置) <?xml version=&q

【转载】SpringMVC配置文件详解

转自:https://my.oschina.net/happyBKs/blog/691502 web.xml文件是web应用的部署描述. 在上一节的springMVC示例中 ,idea下的Maven-webapp项目自动生成了web.xml文件,用的是webapp2.3的标准.文件头声明如下: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http:/

【Spring】SpringMVC之详解AOP

1,AOP简介 Aspect Oriented Programming  面向切面编程.AOP还是以OOP为基础,只不过将共同逻辑封装为组件,然后通过配置的方式将组件动态切入到原有组件中.这样做的有点有:可以在不修改原有组件功能代码的基础上,对组件进行扩充,对公共需要和传统业务进行解耦. 2,语法 1.切面组件(加什么功能?) Aspect 在组件中寻找共通位置和时机,将追加功能切入到原有组件中.追加的功能组件一般被称为切面组件. 2.  切入点(给谁加?) Pointcut 切入点用于指定切入

springMVC配置详解(转)

现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理. 一.Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar.spring-webmvc.jar.comm

Maven构建SpringMVC项目详解

Eclipse版本: Eclipse Java EE IDE for Web Developers. Version: Kepler Service Release 2 上述版本的Eclipse中已经包含了基本的maven插件,如果你使用的eclipse中没有,可以通过下面的地址在Eclipse Help->Install New Software 中安装: http://m2eclipse.sonatype.org/sites/m2e 安装WTP(Web Tools Project)插件 地址

利用Intellij+MAVEN搭建SpringJDBC+MySql+SpringMVC项目详解

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion&