MultipartFile(文件的上传)--CommonsMultipartResolver

SpringMVC 中,文件的上传,是通过 MultipartResolver 实现的。 所以,如果要实现文件的上传,只要在 spring-mvc.xml 中注册相应的 MultipartResolver 即可。

MultipartResolver 的实现类有两个:

  1. CommonsMultipartResolver
  2. StandardServletMultipartResolver

两个的区别:

  1. 第一个需要使用 Apache 的 commons-fileupload 等 jar 包支持,但它能在比较旧的 servlet 版本中使用。
  2. 第二个不需要第三方 jar 包支持,它使用 servlet 内置的上传功能,但是只能在 Servlet 3 以上的版本使用。

第一个使用步骤:

/*CommonsMultipartResolver  上传用到的两个包*/

"commons-fileupload:commons-fileupload:1.3.1",

"commons-io:commons-io:2.4"

Spring_mvc.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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

   <!-- 开启mvc-->
    <mvc:annotation-driven/>

    <!-- 配置扫描发现所有具有 @Controller 注解的类,加载到容器 -->
    <context:component-scan base-package="text1"/>

    <bean id="view" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--1 CommonsMultipartResolver
    第一个需要使用 Apache 的 commons-fileupload 等 jar 包支持,
    但它能在比较旧的 servlet 版本中使用-->

    <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="utf-8" />
        <property name="maxUploadSize" value="10485760000" />
        <property name="maxInMemorySize" value="40960" />
    </bean>

</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
         version="3.1">

    <servlet>
        <servlet-name>mvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:Spring_mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>
        <servlet-name>mvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>
imgTest .java

java

package text1;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

@Controller
@RequestMapping("/create")
public class imgTest {

@Autowired
private HttpServletRequest request;

    @RequestMapping("/jq")
    public String jq() {
        System.out.println("oooo");
        return "index";
    }

    @RequestMapping("/upload")
    public String upload(MultipartFile[] mfile) throws IOException {

        if (mfile !=null && mfile.length>0) {
            for (int i = 0;i<mfile.length;i++){
                long start = System.currentTimeMillis();
                System.out.println("-------------------------------------------------");
                System.out.println("获取文件流"+mfile[i].getInputStream());
                System.out.println("获取文件的字节大小【byte】"+mfile[i].getSize());
                System.out.println("文件类型"+mfile[i].getContentType());
                System.out.println("获取文件数据"+mfile[i].getBytes());
                System.out.println("文件名字"+mfile[i].getName());
                System.out.println("获取上传文件的原名"+mfile[i].getOriginalFilename());

                System.out.println("-------------------------------------------------");

                try {
                    String filePath = request.getSession().getServletContext()
                            .getRealPath("/") + "assets/" +start+ mfile[i].getOriginalFilename();

                    //转存文件

                    mfile[i].transferTo(new File(filePath));
                }catch (Exception e){
                    e.printStackTrace();
                }

                //mfile[i].transferTo(new File("D:/ideas/"+mfile[i].getOriginalFilename()+ mfile[i].getOriginalFilename().substring(
                     //   mfile[i].getOriginalFilename().lastIndexOf("."))));
                // System.out.println(mfile.getOriginalFilename());
              //  mfile[i].transferTo(new File("/assets" + mfile[i].getOriginalFilename()));

            } return "cg";

        } else {
            System.out.println("失败");
            return "sb";
        }
    }
}

html:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>

    <title>Title</title>
</head>
<body>
<form:form action="/create/upload" enctype="multipart/form-data">
    <input type="file" name="mfile" id="img" /><br>
    <input type="file" name="mfile"  id="img2"/>
    <%--<img src="#" id="ser" >--%>
    <input type="submit" value="上传图片" />
</form:form>

</body>
</html>

时间: 2024-08-08 16:50:17

MultipartFile(文件的上传)--CommonsMultipartResolver的相关文章

SpringMVC实现文件的上传和下载

前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:"用什么技术来实现一般网页上文件的上传和下载?是框架还是Java中的IO流".我回复他说:"使用SpringMVC框架可以做到这一点,因为SpringMVC为文件的上传提供了直接的支持,但需要依赖Apache提供Commons FileUpload组件jar包."鉴于这个问题,我上网也百度了一下,网上很多都是介绍的使用IO流来实现文件的上传和下载,也有说到框架的,但介绍的并不是很完整,今天小钱将和大家介绍使用Spr

n文件的上传和下载,struts2和springmvc

首先,struts2的上传下载的配置 因为struts2是配置的上传的拦截器,很简单的步揍就可以上传, 首先是配置struts的action映射 <!-- 4. 修改上传文件的最大大小为30M --> <constant name="struts.multipart.maxSize" value="31457280"/> <!-- 注意: action 的名称不能用关键字"fileUpload" --> <

SpringMVC进行文件的上传以及多文件的上传(转)

基本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤 SpringMVC 基础教程 框架分析:http://blog.csdn.net/swingpyzf/article/details/8885459 SpringMVC 基础教程 简单入门实例:http://blog.csdn.net/swingpyzf/article/details/8904205   文件上传项目的源码下载地址:http:

springMVC文件的上传与下载

1.文件上传 springmvc中只需要配置上传组件,然后配合使用MultipartFile,就可以轻松实现单个文件上传和批量上传,而且上传的文件类型和大小都可以在springmvc 配置文件中配置. pom文件中增加: <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${fi

Spring MVC 实现文件的上传和下载

文件上传是项目开发中最常见的功能.为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data.只有在这样的情况下,浏览器才会把用户选择的文件以二进制数据发送给服务器. 一旦设置了enctype为multipart/form-data,浏览器即会采用二进制流的方式来处理表单数据,而对于文件上传的处理则涉及在服务器端解析原始的HTTP响应.在2003年,Apache Software Foundation发布了开源的Commons File

jquery文件批量上传控件Uploadify3.2(java springMVC)

人比較懒  有用为主 不怎么排版了 先放上Uploadify的官网链接:http://www.uploadify.com/  -->里面能够看到PHP的演示样例,属性说明,以及控件下载地址.分flash版(免费)和html5版(收费). 官网上能够看到效果演示. 另外在网上找到了一份Uploadify3.2的中文API文档.能够在我上传的资源里面下载. 以下就是一个基于springMVC的文件上传演示样例,看起来可能比文档更直观一些··· 1.下载插件放到项目中 2.在jsp页面中引入下面JS和

SpringMVC笔记(五)文件的上传下载

一.SpringMVC实现文件的上传 Spring MVC 上下文中默认没有为文件上传提供了直接的支持,因 此默认情况下不能处理文件的上传工作, 如果想使用 Spring 的文件上传功能,需现在上下文中配置 CommonsMultipartResovler: 二.文件上传的步骤:    1.加入jar包:        commons-fileupload-1.3.1.jar        commons-io-2.4.jar 2.在SpringMVC配置文件中配置CommonsMultipar

spring mvc uploadify上传(全部文件同时上传)

下载uploadify:www.baidu.com. 引入文件,css,js等:略. 效果图: 因为是手动上传,所以选择完文件又想取消的话点' X ' ,上传成功后不能取消. 前端代码: 注意uploaify('upload', '*'),这里是同时上传所有文件,如果没有*,则需要一个个点上传. controller代码: 1 @Controller 2 @RequestMapping(value="/utils") 3 public class UploadController{ 4

FormData对象实现文件Ajax上传

后台: import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation