您的位置:首页 > 编程语言 > Java开发

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;
}
}


运行结果



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: