SpringMVC的文件上传下载
SpringMVC的文件下载只需加入@ResponseBody并将返回值设置成ResponseEntity<byte []>,将需要下载的文件包装成ResponseEntity<byte []>对象然后返回即可。
包装成ResponseEntity<byte []>对象需要设置响应头信息
- 一个固定的HTTP响应头
- 返回响应码
- 下载的文件内容
下面是简单的使用:
@ResponseBody
@RequestMapping("/download")
public ResponseEntity<byte []> fileDownloadTest(HttpSession session) throws IOException {
byte[] body;
ServletContext context = session.getServletContext();
InputStream is = context.getResourceAsStream("download/testfile.jpg");
int available = is.available();
body = new byte[available];
is.read(body);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment;filename=download.jpg");
HttpStatus statusCode = HttpStatus.OK;
ResponseEntity<byte []> responseEntity = new ResponseEntity<byte[]>(body, headers, statusCode);
return responseEntity;
}
文件上传则需要在配置文件之中配置一个文件的处理器组件
注意:id 是规定了不能更改
并且可以设置上传文件的大小,解码字符集等
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
<property name="maxUploadSize" value="10000000"></property>
</bean>
配置完成后,只需要在响应映射方法上,添加一个MultipartFile参数,并作出响应参数映射,就可以通过该参数获取到用户上传的文件数据了。
主:其中transferTo方法只要指定一个File对象就可以直接保存到响应的目录之中。
简单使用如下:
@RequestMapping("/upload")
public String fileUploadTest(@RequestParam("uploadFile")MultipartFile multipartFile,HttpSession session) throws IllegalStateException, IOException {
String name = multipartFile.getOriginalFilename();
multipartFile.transferTo(new File(session.getServletContext().getRealPath("upload")+"/"+name));
return "success";
}

浙公网安备 33010602011771号