springMVC 处理 Multipart 类型的请求#
处理表单的时候,可能会传过来一个文件。
配置 multipart 解析器#
解析器是 MultipartResolver 的子类,一般使用standardServletMultipartResolver就行了。
直接在 spring 配置文件里添加
<bean class="org.springframework.web.multipart.support.StandardServletMultipartResolver"></bean>
或者
@Bean
public MultiPartResolver getMultipartResoler(){
return new StandardServletMultipartResolver();
}
配置上传的要求#
#web.xml
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<multipart-config>
<location>D:\</location>
<max-file-size>209152</max-file-size>
<max-request-size>4194304</max-request-size>
</multipart-config>
</servlet>
是在 DispartcherServlet 里面配置,使用multipart-ocnfig标签
** location 要确保适合,不然上传文件后会因为路径不符合要求报错 **
controller#
@RequestMapping(value = "/upload",method = RequestMethod.POST)
@ResponseBody
public String vallidateRegisterForm(@RequestPart("myfile")MultipartFile file) throws IOException {
file.transferTo(new File(file.getOriginalFilename()));
return "upload success.";
}
我们使用了@RequestPart("myfile")MultipartFile file
, MultipartFile 可以很方便的处理上传后的文件。
这是他的接口定义
public interface MultipartFile extends InputStreamSource {
String getName();
String getOriginalFilename();
String getContentType();
boolean isEmpty();
long getSize();
byte[] getBytes() throws IOException;
InputStream getInputStream() throws IOException;
void transferTo(File var1) throws IOException, IllegalStateException;
}
随便写个表单测试一下#
<form class="fileform" action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="myfile" value="">
<input type="submit" name="" value="submit">
</form>