@Deprecated
@RequestMapping("/download2/{suffix}/{filename}")
public String download2(HttpServletRequest request, HttpServletResponse response, @PathVariable("suffix") String suffix, @PathVariable("filename") String filename) {
String filenameWithSuffix = filename + "." +suffix;
try {
String path=request.getSession().getServletContext().getRealPath("download");
File file = new File(path + File.separator + filenameWithSuffix);
// 以流的形式下载文件。
InputStream fis = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
response.reset(); // 清空response
// 设置response的Header
//response.addHeader("Content-Disposition", "attachment;filename=" + new String(filenameWithSuffix.getBytes(),"utf-8"));
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filenameWithSuffix, "UTF-8"));
response.addHeader("Content-Length", "" + file.length());
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 返回值要注意,要不然就出现下面这句错误!
//java+getOutputStream() has already been called for this response
return null;
}
@RequestMapping("/download/{suffix}/{filename}")
public ResponseEntity<byte[]> download(HttpServletRequest request, @PathVariable("suffix") String suffix, @PathVariable("filename") String filename) {
String filenameWithSuffix = filename + "." +suffix;
HttpHeaders headers = new HttpHeaders();
try {
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", URLEncoder.encode(filenameWithSuffix, "UTF-8"));
String path=request.getSession().getServletContext().getRealPath("download");
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(new File(path + File.separator + filenameWithSuffix)), headers, HttpStatus.CREATED);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
第一个方法太low ^_^
分享到:
相关推荐
SpringMVC基础入门教程,适合刚刚解除SpringMVC的童鞋们 Spring_MVC 一个名师讲解的PDF版.
Spring_Mvc 1.实现简单的Spring_Mvc配置 2.下一篇中有Spring_Struts2的简单配置
Spring_+_Spring_MVC_+_Mybatis基于Maven的Spring_+_Spring_MVC_+_Mybatis的环境搭建
spring_mvc 文档spring_mvc 文档spring_mvc 文档spring_mvc 文档spring_mvc 文档spring_mvc 文档spring_mvc 文档spring_mvc 文档spring_mvc 文档spring_mvc 文档spring_mvc 文档spring_mvc 文档spring_mvc 文档
精通Spring_Web_MVC优秀框架.pdf
Spring_MVC_实战教程
Spring_MVC详解学习,Spring_MVC详解学习,Spring_MVC详解学习,Spring_MVC详解学习
spring_mvc-学习spring_mvc-学习 备份备份备份
spring_mvc各种注解详解与总结,针对初学spring_mvc的童鞋
Spring_MVC MongoDBSpring_MVC MongoDBSpring_MVC MongoDBSpring_MVC MongoDBSpring_MVC MongoDBSpring_MVC MongoDBSpring_MVC MongoDB
Spring_MVC框架的高级配置 Spring_MVC框架的高级配置
spring_mvc是现在比较流行常用的框架,此文档为最全最经典spring_mvc教程,包括原理,代码
spring_mvc2
SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于SpringFrameWork的后续产品,已经融合在 Spring Web Flow 中
一个动态的java web 工程,使用了spring_mvc框架搭建了一个小小的实例,愿和大家一起共享之,谢谢。希望能帮助到搭建,最近也在打算再次使用spring_mvc框架,却发现网上却少有实例可以提供参考,故而得空自己写了一...
Spring_MVC_教程_快速入门_深入分析
Spring_MVC_3.0实战指南。
spring_mvc_request