SpringMVC之上传文件
2017-02-16 12:31
330 查看
介绍
Spring提供两种方法来处理文件上传,分别是Commons FileUpload多部分请求流程和使用Servlet3.1多部分请求流程两种配置
(一)使用Commons FileUpload解析器
这个需要添加依赖到项目中<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency>
在dispatcher-servlet.xml文件配置CommonsMultipartResolver
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--临时目录--> <property name="uploadTempDir" value="/"/> <!--允许文件上传的最大字节数--> <property name="maxUploadSize" value="104576"/> <!--允许保存到临时文件的最大字节数--> <property name="maxInMemorySize" value="524288"/> </bean>
(二)使用Servlet3.1
在dispatcher-servlet.xml文件配置StandardServletMultipartResolver<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"> </bean>
然后在web.xml配置其属性
<multipart-config> <location>/</location> <max-file-size>1048576</max-file-size> <max-request-size>2097152</max-request-size> <file-size-threshold>524288</file-size-threshold> </multipart-config>
使用Servlet3.1方法的文件上传实例
(一)添加相关依赖到项目<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.7.RELEASE</version> </dependency> </dependencies>
(二)在springmvc-servlet.xml配置多部分解析器
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="springmvc.fileupload" />
<context:annotation-config />
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"> </bean>
</beans>
(三)web.xml配置解析器属性
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<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>/</location> <max-file-size>1048576</max-file-size> <max-request-size>2097152</max-request-size> <file-size-threshold>524288</file-size-threshold> </multipart-config>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
(四)User类
public class User { private String name; private MultipartFile file; public String getName() { return name; } public void setName(String name) { this.name = name; } public MultipartFile getFile() { return file; } public void setFile(MultipartFile file) { this.file = file; } }
(五)视图定义fileUpload.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="mvc" uri="http://www.springframework.org/tags/form" %> <html> <head> <title>File Upload</title> </head> <body> <mvc:form modelAttribute="user" action="upload.mvc" enctype="multipart/form-data"> <table> <tr> <td>Name</td> <td><mvc:input path="name"/></td> </tr> <tr> <td>Choose File</td> <td><mvc:input type="file" path="file" /></td> </tr> <tr> <td colspan="2" > <input type="submit" value="Submit"> </td> </tr> </table> </mvc:form> <h3>Uploaded Information</h3> <table> <tr> <td>Name</td> <td>${userName}</td> </tr> <tr> <td>Choose File</td> <td>${fileLength}</td> </tr> </table> </body> </html>
(六)编写处理文件上传的控制器FileUploadController.java
@Controller public class FileUploadController { @RequestMapping("/form") public ModelAndView getFileUploadForm() { return new ModelAndView("fileUpload","user",new User()); } @RequestMapping("/upload") public ModelAndView processUser(User user) throws IOException { ModelAndView modelAndView=new ModelAndView(); modelAndView.setViewName("fileUpload"); //将用户名和文件大小数据返回到模型 modelAndView.addObject("userName",user.getName()); modelAndView.addObject("fileLength",user.getFile().getBytes().length); return modelAndView; } }
运行结果
相关文章推荐
- Struts2系列笔记(4)---Ation类访问servle
- Struts2系列笔记(3)---Action类的3种书写方式
- Error occured processing XML 'Cannot find class [springmvc.extention.BeanArgumentResolver]
- java中的compareto方法
- Java质数求解
- (40)Java学习笔记——IO流技术 / File类
- (39)Java学习笔记——集合知识点汇总
- springmvc 配置多视图(jsp,freemarker,HTML等)
- Java之泛型
- Spring+Hibernate框架下MySql读写分离,主从数据库配置
- Spring官网下载dist.zip的几种方法
- spring的IOC和DI解释
- Springmvc国际化的工作原理
- 导入spring源码到eclipse
- Java.RMI远程方法调用
- Maven学习 (二) Eclipse 上安装 Maven3插件
- Java基础之常见错误
- Spring 的 init-method 和 destory-method
- Spring InitializingBean和init-method
- The "Double-Checked Locking is Broken" Declaration