SpringMVC的文件上传下载

SpringMVC的文件下载只需加入@ResponseBody并将返回值设置成ResponseEntity<byte []>,将需要下载的文件包装成ResponseEntity<byte []>对象然后返回即可。

包装成ResponseEntity<byte []>对象需要设置响应头信息

  1. 一个固定的HTTP响应头
  2. 返回响应码
  3. 下载的文件内容

下面是简单的使用:

@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";
}

 

posted @ 2020-07-14 19:43  君の园  阅读(22)  评论(0)    收藏  举报