要接收通过 HTTP Post 上传的文件,您需要执行以下操作:
@RequestMapping( value = "...", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE ) public Object uploadFile( @RequestPart MultipartFile file ) { 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="file"> </form>
作为 HTML ( Spring TagLibs ):
<form action="/..." enctype="multipart/form-data" method="post"> <form:input type="file" path="file"> </form>
作为原始 HTTP 请求:
POST /... HTTP/1.1 Host: ... Content-Type: multipart/form-data; boundary=----------287032381131322 ------------287032381131322 Content-Disposition: form-data; name="file"; filename="r.gif" Content-Type: image/gif GIF87a.............,...........D..; ------------287032381131322--
该请求将意味着以下内容:
fileName == "r.gif" contentType == "image/gif"
在 Spring MVC 中
需要添加提到的 bean 以访问多部分功能
<!-- max size of file in memory (in bytes) --> <property name="maxInMemorySize" value="1048576" /> <!-- 1MB --> </bean>