要接收通过单个 HTTP Post 上传的多个文件,您需要执行以下操作:
@RequestMapping( value = "...", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE ) public Object uploadFile( @RequestPart MultipartFile[] files ) { for (file : files) { String fileName = file.getOriginalFilename(); InputStream inputStream = file.getInputStream(); String contentType = file.getContentType(); . . . } }
请注意,@RequestPart参数的名称需要与请求中的部分名称匹配。
作为 HTML:
<form action="/..." enctype="multipart/form-data" method="post"> <input type="file" name="files"> <input type="file" name="files"> </form>
作为原始 HTTP 请求:
POST /... HTTP/1.1 Host: ... Content-Type: multipart/form-data; boundary=----------287032381131322 ------------287032381131322 Content-Disposition: form-data; name="files"; filename="r.gif" Content-Type: image/gif GIF87a.............,...........D..; ------------287032381131322 Content-Disposition: form-data; name="files"; filename="banana.jpeg" Content-Type: image/jpeg GIF87a.............,...........D..; ------------287032381131322--
该请求将意味着以下内容:
files[0].getOriginalFilename() == "r.gif" files[0].getContentType() == "image/gif" files[1].getOriginalFilename() == "r.jpeg" files[1].getContentType() == "image/jpeg"