SpringMVC实战教程 | 第四篇:SpringMVC上传文件

介绍

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

运行结果
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值