@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 ^_^
分享到:
相关推荐
**Struts1** 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它简化了开发过程并提供了强大的表单处理能力。在文件上传中,Struts1通过`ActionForm`来接收前端提交的表单数据,包括文件域元素。`...
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
Mocking spring MvC 80- Testing web security 83 4.3 Testing a running application 86 Starting the server on a random port 87. Testing HTML pages with selenium 88 4.4 Summary 90 Getting Groovy with the ...
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
- **Controller处理**:在Controller层,创建一个方法接收上传请求,该方法需要使用`@RequestParam("file") MultipartFile file`注解来接收上传的文件。然后,你可以将文件保存到服务器的某个目录,或者将其内容...
10. **框架支持**:现代的 Java Web 框架,如 Spring Boot,提供了更便捷的文件上传下载支持,例如 Spring MVC 中的 `MultipartFile` 接口,可以简化处理流程。 提供的 `updown` 压缩包可能包含了实现上述功能的...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...