Spring MVC 文件下载

原创 2018年04月15日 10:17:45

       文件下载比较简单,直接在页面给出一个超链接,该链接 href 的属性等于要下载的文件的文件名,就可以实现文件下载了。但是如果该文件的文件名为中文文件名,在某些早期的浏览器上就会导致下载失败;如果使用最新的 Firefox、Opera、Chrome、Safari 则都可以正常下载文件名为中文的文件了。

       Spring MVC 提供了一个 ResponseEntity 类型,使用它可以很方便地定义返回的 HttpHeaders 和 HttpStatus。

       download.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>文件下载</h3>
<a href="download?filename=${requestScope.user.image.originalFilename }">
${requestScope.user.image.originalFilename }
</a>
</body>
</html>

    UploadFile.java

@RequestMapping(value="/download")
public ResponseEntity<byte[]> download(HttpServletRequest request,
@RequestParam("filename") String filename,
Model model) throws IOException {
//下载文件路径
String path = request.getServletContext().getRealPath("/images/");
File file = new File(path+File.separator+filename);
HttpHeaders headers = new HttpHeaders();
//下载显示的文件名,解决中文名称乱码问题
String downloadFileName = new String(filename.getBytes("UTF-8"),"iso-8859-1");
//通知浏览器以attachment(下载方式)打开图片
headers.setContentDispositionFormData("attachment", downloadFileName);
//application/octet-stream:二进制流数据(最常见的文件下载
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//201 HttpStatus.CREATED
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers,HttpStatus.CREATED);
}
}

       download 处理方法接收到页面传递的文件名 filename 后,使用 Apache Commons FileUpload 组件的 FileUtils 读取项目的 images 文件夹下的该文件,并将其构建成 ResponseEntity 对象返回客户端下载

       使用 ReponseEntity 对象,可以很方便地定义返回的 HttpHeader 和 HttpStatus。上面代码中的 MediaType,代表的是 Internet Media Type,即互联网媒体类型,也叫做 MIME 类型。在 Http 协议消息头中,使用 Content-Type 来表示具体请求中的媒体类型信息。HttpStatus 类型代表的是 Http 协议中的状态。

springMVC 文件下载

package com.clj.test.down.util; import java.io.File; import java.io.IOException; import org.apache...
  • clj198606061111
  • clj198606061111
  • 2014-03-07 23:56:36
  • 91297

springMVC实现文件下载

springMVC实现文件下载 一、文件下载原理 1、设置 response 响应头 2、读取文件 -- InputStream 3、写出文件 -- OutputStr...
  • HaHa_Sir
  • HaHa_Sir
  • 2018-02-05 11:59:29
  • 92

Spring MVC文件上传下载

  • 2012年08月17日 11:20
  • 4.98MB
  • 下载

使用springmvc实现文件下载

文件下载比较简单,直接在页面给出了一个url,该url的属性包括要下载文件的文件名以及路径,就可以实现文件下载了。但是如果该文件的文件名为中文文件名,在某些早起的浏览器上就会导致下载失败;如果使用最新...
  • actionzh
  • actionzh
  • 2017-08-11 22:17:31
  • 912

SpringMVC实现文件下载

前段时间做项目用Plupload实现了文件分块上传SSM框架+Plupload实现分块上传(Spring+SpringMVC+MyBatis+Plupload),项目仅有文件上传还不够,还应提供文件下...
  • qq_33290787
  • qq_33290787
  • 2016-08-27 13:44:36
  • 5400

springMVC文件下载代码

  • 2016年10月25日 13:35
  • 1KB
  • 下载

springmvc 下载文件

前言spring mvc下载文件原理,其实跟普通的下载文件没有什么区别,区别是spring mvc的请求映射跟struts等不同。文件下载的原理就是,将文件以流的方式写出到response中,因为输出...
  • wangjun5159
  • wangjun5159
  • 2016-08-31 19:51:06
  • 523

SpringMVC实现文件下载的两种方法

这两天玩spring的过程中遇到了一个很常见的问题——文件下载。以往很多时候都是直接给一个文件的静态链接,这种方法有很多局限性,其中一个很明显的局限性就是不易统计下次状态,还有就是需要http服务器来...
  • WuZuoDingFeng
  • WuZuoDingFeng
  • 2016-12-06 16:50:33
  • 37898

spring mvc 下载文件 IE浏览器文件名是乱码

页面下载文件时,内容都是中文,只有文件名是乱码,在谷歌等浏览器下是可以的,查了下资料是浏览器兼容性问题 写一个转换 /** * * @Title: processFil...
  • heyanfeng22
  • heyanfeng22
  • 2015-10-27 20:18:59
  • 3884

SpringMVC文件下载中文乱码

java文件@RequestMapping("/download") public ResponseEntity dowload() throws IOException{ String pa...
  • xuebing1995
  • xuebing1995
  • 2017-08-04 15:19:09
  • 2200
收藏助手
不良信息举报
您举报文章:Spring MVC 文件下载
举报原因:
原因补充:

(最多只允许输入30个字)