SpringMVC文件上传

xiaoxiao2021-02-28  82

配置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"; }
转载请注明原文地址: https://www.6miu.com/read-71608.html

最新回复(0)