之前的表单数据都是文本数据,现记录:利用MultipartResolver进行文件上传。

①首先,需引入commons-fileUpload和commons-io jar包,pom.xml文件的坐标:

 <properties>
      <spring.version>3.2.1.RELEASE</spring.version>
  </properties>
  <dependencies>
          <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${spring.version}</version>
            </dependency>

<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
        </dependency>
        <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity</artifactId>
                <version>1.7</version>
            </dependency>
            <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity-tools</artifactId>
                <version>2.0</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.struts</groupId>
                        <artifactId>struts-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.struts</groupId>
                        <artifactId>struts-taglib</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.struts</groupId>
                        <artifactId>struts-tiles</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>sslext</groupId>
                        <artifactId>sslext</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

<dependency>
                <groupId>servletapi</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.4</version>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>jspapi</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.0</version>
                <optional>true</optional>
            </dependency>
            
            <!-- if you enable JSR303 (Bean Validation) in spring. -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
                <version>4.2.0.Final</version>
                <!-- <optional>true</optional> -->
            </dependency>
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.1</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.2</version>
            </dependency>
  </dependencies>

② 修改表单页面:

<form method="post" enctype="multipart/form-data">
    <div>
        <label for="userName">userName:</label>
        <input name="userName" value="$!user.userName">
        <span>$!br.getFieldError("userName").getDefaultMessage()</span>
    </div>
    
    <div>
        <label for="email">Email:</label>
        <input name="email" value="$!user.email">
    </div>
    
    <div>
        <label for="age">age:</label>
        <input name="age" value="$!user.age">
    </div>
    
    <div>
        <label for="image">image:</label>
        <input type="file" name="image">
    </div>
    <button type="submit">Submit</button>
</form>

③ 处理multipart 表单的方法:

    //处理表单输入
    @RequestMapping(method=RequestMethod.POST)
    //@Valid是对user参数的验证
    public String addForm(@Valid User user,BindingResult br,@RequestParam(value="image",required=false)MultipartFile image,Model model){
        if(br.hasErrors()){
            model.addAttribute("br",br);
            return "/user/edit";
        }
        LOG.info("Image:"+image.getName()+"  Image Size:"+image.getSize());
//        saveImage();
        userService.saveUser(user);
        return "redirect:/home/"+user.getUserName();
    }

注意到输入参数增加了@RequestParam(value="image",required=false)MultipartFile image,这是将上传的图片文件赋给MultipartFile。但DispatcherServlet并不知道如何处理multipart的表单数据,需要一个multipart解析器将post请求的数据抽取处理,然后再将数据通过DispatcherServlet传递给Controller。

③ spring提供了一个Multipart解析器,需要在spring上下文中注册:

<!--文件上传解析器 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="100000"></property>
    </bean>

这个bean的id是有讲究的,当DispatcherServlet查找multipart解析器时,会查找id为multipartResolver的Bean。若定义的bean id 不是multipartResolver,DispatcherServlet会对它进行忽略。

可以画成下图进行理解:

aaarticlea/png;base64,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" alt="" />

spring mvc利用MultipartResolver解析Multipart/form-data进行文件上传的更多相关文章

  1. Spring MVC 学习总结(五)——校验与文件上传

    Spring MVC不仅是在架构上改变了项目,使代码变得可复用.可维护与可扩展,其实在功能上也加强了不少. 验证与文件上传是许多项目中不可缺少的一部分.在项目中验证非常重要,首先是安全性考虑,如防止注 ...

  2. Spring Boot + Vue 前后端分离,两种文件上传方式总结

    在Vue.js 中,如果网络请求使用 axios ,并且使用了 ElementUI 库,那么一般来说,文件上传有两种不同的实现方案: 通过 Ajax 实现文件上传 通过 ElementUI 里边的 U ...

  3. Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)

    form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...

  4. jquery.form 兼容IE89文件上传

    导入部分 <script type="text/javascript" src="js/jquery-1.8.3.min.js" charset=&quo ...

  5. Spring MVC-表单(Form)标签-文件上传(File Upload)示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_upload.htm 说明:示例基于Spring MVC 4.1.6. 以下示例显 ...

  6. Mvc利用淘宝Kissy uploader实现图片批量上传附带瀑布流的照片墙

    前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...

  7. Spring学习笔记2——表单数据验证、文件上传

    在上一章节Spring学习笔记1——IOC: 尽量使用注解以及java代码中,已经搭建了项目的整体框架,介绍了IOC以及mybatis.第二节主要介绍SpringMVC中的表单数据验证以及文件上传. ...

  8. form表单文件上传 servlet文件接收

    需要导入jar包 commons-fileupload-1.3.2.jar commons-io-2.5.jar Upload.Jsp代码 <%@ page language="jav ...

  9. Django 基于Ajax & form 简单实现文件上传

    前端实现 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="U ...

随机推荐

  1. Python基础学习总结__Day4

    一.装饰器 前戏: 1.函数即变量 (1)函数名为‘门牌号’即内存地址,加括号开始调用 (2)没有变量调用将清空内存 (3)匿名函数(lambda函数):没有‘门牌号’,需要赋值给变量,否则将会被清空 ...

  2. python爬虫基础09-selenium大全3/8-Remote Webdriver

    Selenium笔记(3)Remote Webdriver 本文集链接:https://www.jianshu.com/nb/25338984 简介 selenium.webdriver.remote ...

  3. GoF23种设计模式之行为型模式之命令模式

    一.概述 将一个请求封装为一个对象,从而可以使用不同的请求对客户端进行参数化.对请求排队或记录请求日志,以及支持撤销的操作. 二.适用性 1.当抽象出待执行的动作以参数化某个对象的时候. 2.当需要在 ...

  4. Python中re(正则表达式)模块使用方法

    Python中常用的正则表达式处理函数: re.match re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词. import re text = "JGood ...

  5. BFS、模拟:UVa1589/POJ4001/hdu4121-Xiangqi

    Xiangqi Xiangqi is one of the most popular two-player board games in China. The game represents a ba ...

  6. 水题:51Nod1095-Anigram单词

    1095 Anigram单词 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 Description 一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那 ...

  7. Linux下查看USB设备信息

    首先需要将usbfs挂载一下,然后才能查看.$ mount -t usbfs none /proc/bus/usb$ cat  /proc/bus/usb/devices或者在文件(/etc/fsta ...

  8. kettle-学习参考

    一      关于Kettle Kettle是一款国外开源的ETL工具,纯java编写,数据抽取高效稳定的数据迁移工具.Kettle中有两种脚本文件,transformation和job,transf ...

  9. Apache简易快速安装

    转发出处:https://blog.csdn.net/qq_34804120/article/details/78862290 准备安装包 到https://www.apachelounge.com/ ...

  10. luogu3386 【模板】二分图匹配 匈牙利算法 hdu2063 过山车 dinic

    luogu 匈牙利算法 #include <iostream> #include <cstring> #include <cstdio> using namespa ...