配置multipart解析器
- CommonsMultipartResolver
使用Jakarta Commons FileUpload 解析 mulipart请求 - StandardServletMultipartResolver
Servlet3.0支持,Servlet3.0以下不支持
使用StandardServletMultipartResolver
StandardServletMultipartResolver 没有构造器参数,如果要限制上传文件的大小等一些属性,那么需要在web.xml中配置DispatcherServlet的 multipart-config属性
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<multipart-config>
<location>J:\\uploads</location>
<max-file-size>2000000</max-file-size>
</multipart-config>
</servlet>
使用spring配置StandardServletMultipartResolver bean
<bean class="org.springframework.web.multipart.support.StandardServletMultipartResolver"></bean
使用CommonsMultipartResolver
CommonsMultipartResolver 必须要配置临时目录,通过属性来注入
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxInMemorySize" value="5400000"></property>
<property name="uploadTempDir" value="upload"></property>
</bean>
处理mulipartqing请求
三种方式:
1. 使用byte[] 参数
2. 使用MulipartFile 接口(spring提供)
3. 使用Part 接口(servlet 提供)
byte[]
必须要搭配StandardServletMultipartResolver 解析器
@RequestMapping("/uploads")
public String uploads(@RequestPart byte[] myfile ) throws IOException{
System.out.println("上传文件");
System.out.println(myfile.length);
OutputStream outputStream = new FileOutputStream("J:\\pic111.png");
outputStream.write(myfile);
outputStream.close();
return "success";
}
MulipartFile
必须要搭配CommonsMultipartResolver 解析器
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;
}
必须要加@RequestParam注解,否则会报错
@RequestMapping("/upload")
public String uploads(@RequestParam MultipartFile myfile) throws IOException {
System.out.println(myfile.getName());
System.out.println(myfile.getOriginalFilename());
myfile.transferTo(new File("J:\\ppp.jpg"));
return "success";
}
Part
必须要搭配StandardServletMultipartResolver 解析器
@RequestMapping("/upload")
public String uploads(@RequestPart Part myfile) throws IOException {
System.out.println(myfile.getName());
System.out.println(myfile.getOriginalFilename());
myfile.transferTo(new File("J:\\ppp.jpg"));
return "success";
}