传统代码:
@RequestMapping("file/download")
public void fileDownload(HttpServletResponse response, HttpServletRequest request) {
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
String path = request.getServletContext().getRealPath("static/style.css");
response.setHeader("Content-Disposition", "attachment;fileName=style.css");
InputStream inputStream = null;
OutputStream outputStream = null;
try {
File file = new File(path);
inputStream = new FileInputStream(file);
outputStream = response.getOutputStream();
byte[] b = new byte[1024];
int length;
while ((length = inputStream.read(b)) > 0) {
outputStream.write(b, 0, length);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (outputStream != null) outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
既然用了Spring Mvc 就不应该出现j2ee的reponse的接口代码
java:
@RequestMapping("download")
public ResponseEntity<byte[]> download() throws IOException {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", "upload.zip");
File file = new File("d://upload.zip");
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
}
xml:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
//把ByteArray加在Json前面
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
<property name = "supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
本文介绍了使用SpringMVC框架实现文件下载的两种方法:传统Servlet API方式与现代Restful风格API方式。通过示例代码展示了如何配置并实现文件的下载功能。

被折叠的 条评论
为什么被折叠?



