处理客户端下载文件
以下是实例:
Controller:
@RequestMapping("/download")
public ResponseEntity<byte[]> download(HttpServletRequest request) throws Exception {
byte[] body ;
//获取 Servlet 上下文对象
ServletContext context = request.getServletContext();
/*
* 根据资源相对路径获取绝对路径,并创建输入流
*/
String realPath = context.getRealPath("img/6350.jpg");
FileInputStream input = new FileInputStream(realPath);
/*
* 还可以从Servlet上下文路径中 获取资源的 输入流
* InputStream inputStream = context.getResourceAsStream("img/6350.jpg");
*/
//创建响应体 初始化byte[]数组 input.available() 方法返回流中可以读取的字节数量
body = new byte[input.available()];
//读取
input.read(body);
//创建响应头
HttpHeaders header = new HttpHeaders();
//通过响应头告诉浏览器,响应体中放的是字节数组,实际上是一张图片,需要浏览器下载
header.add("Content-Disposition", "attachment;filename="+System.currentTimeMillis()+".jpg");
//返回响应实体对象
ResponseEntity<byte[]> responseEntity = new ResponseEntity<byte[]>(body,header, HttpStatus.OK);
return responseEntity;
}
项目资源路径:
浏览器访问:http://localhost:8080/springMvcCrud/download