使用@ResponseEntity实现文件下载,此处以图片为例,其余文件格式皆可参照此方式下载。从服务器下载到浏览器
@RequestMapping
(
"/testDown"
)
public
ResponseEntity
<
byte
[]
>
testResponseEntity
(
HttpSession session
)
throws
IOException
{
//
获取
ServletContext
对象
ServletContext servletContext
=
session
.
getServletContext
();
//
获取服务器中文件的真实路径
String
realPath
=
servletContext
.
getRealPath
(
"/static/img/1.jpg"
);
//
创建输入流
InputStream is
=
new
FileInputStream
(
realPath
);
//
创建字节数组
byte
[]
bytes
=
new
byte
[
is
.
available
()];
//
将流读到字节数组中
is
.
read
(
bytes
);
//
创建
HttpHeaders
对象设置响应头信息
MultiValueMap
<
String
,
String
>
headers
=
new
HttpHeaders
();
//
设置要下载方式以及下载文件的名字
headers
.
add
(
"Content-Disposition"
,
"attachment;filename=1.jpg"
);
//
设置响应状态码
HttpStatus statusCode
=
HttpStatus
.
OK
;
//
创建
ResponseEntity
对象
ResponseEntity
<
byte
[]
>
responseEntity
=
new
ResponseEntity
<>
(
bytes
,
headers
,
statusCode
);
//
关闭输入流
is
.
close
();
return
responseEntity
;
}