1、CommonsMultipartResolver是spring里面提供的一个上传方式,效率我不知道,但是加入spring容器管理还是很不错的。
2、先看依赖包pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> ?<modelVersion>4.0.0</modelVersion> ?<groupId>com.troy</groupId> ?<artifactId>springfile</artifactId> ?<version>0.0.1-SNAPSHOT</version> ?<packaging>war</packaging> ?<dependencies> ?????<dependency> ?????<groupId>org.springframework</groupId> ?????<artifactId>spring-webmvc</artifactId> ?????<version>3.2.8.RELEASE</version> ???</dependency> ???<dependency> ?????<groupId>org.apache.commons</groupId> ?????<artifactId>com.springsource.org.apache.commons.fileupload</artifactId> ?????<version>1.2.1</version> ???</dependency> ???<dependency> ?????<groupId>commons-io</groupId> ?????<artifactId>commons-io</artifactId> ?????<version>2.5</version> ???</dependency> ?</dependencies> ?</project>
说明:因为上传文件的这一套东西都是apache提供的,在使用CommonsMultipartResolver上传文件时,需要用到相应的依赖包
3、web.xml配置
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> ?<display-name>iframe</display-name> ?<welcome-file-list> ???<welcome-file>index.html</welcome-file> ???<welcome-file>index.htm</welcome-file> ???<welcome-file>index.jsp</welcome-file> ???<welcome-file>default.html</welcome-file> ???<welcome-file>default.htm</welcome-file> ???<welcome-file>default.jsp</welcome-file> ?</welcome-file-list> ?<servlet> ?????<servlet-name>springmvc</servlet-name> ?????<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> ?????<init-param> ?????????<param-name>contextConfigLocation</param-name> ?????????<param-value>classpath:spring/spring-mvc.xml</param-value> ?????</init-param> ?????<load-on-startup>1</load-on-startup> ?</servlet> ?<servlet-mapping> ?????<servlet-name>springmvc</servlet-name> ?????<url-pattern>/</url-pattern> ?</servlet-mapping> ?<filter> ?????<filter-name>filterEncoding</filter-name> ?????<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> ?????<init-param> ?????????<param-name>encoding</param-name> ?????????<param-value>UTF-8</param-value> ?????</init-param> ?????<init-param> ?????????<param-name>forceEncoding</param-name> ?????????<param-value>true</param-value> ?????</init-param> ?</filter> ?<filter-mapping> ?????<filter-name>filterEncoding</filter-name> ?????<url-pattern>/</url-pattern> ?</filter-mapping> ?<servlet-mapping> ?????<servlet-name>default</servlet-name> ?????<url-pattern>*.js</url-pattern> ?</servlet-mapping> ?<servlet-mapping> ?????<servlet-name>default</servlet-name> ?????<url-pattern>*.css</url-pattern> ?</servlet-mapping></web-app>
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:context="http://www.springframework.org/schema/context" ????xmlns:jdbc="http://www.springframework.org/schema/jdbc" ?????xmlns:jee="http://www.springframework.org/schema/jee" ????xmlns:tx="http://www.springframework.org/schema/tx" ???xmlns:aop="http://www.springframework.org/schema/aop" ????xmlns:mvc="http://www.springframework.org/schema/mvc" ???xmlns:util="http://www.springframework.org/schema/util" ???xmlns:jpa="http://www.springframework.org/schema/data/jpa" ???xsi:schemaLocation=" ???????http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd ???????http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd ???????http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd ???????http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd ???????http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ???????http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd ???????http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd ???????http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd ???????http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"> ?????????<mvc:annotation-driven/> ?????<context:component-scan base-package="com.troy"/> ???<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> ???????<property name="prefix" value="/WEB-INF/page/"/> ???????<property name="suffix" value=".jsp"/> ???</bean> ???<bean id="commonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> ???????<property name="defaultEncoding" value="utf-8"/> ???</bean></beans>
5、web端的代码(file.jsp)
<%@ page language="java" contentType="text/html; charset=utf-8" ???pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><% ???String path = request.getContextPath(); ???String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><html><head><base href="<%=basePath%>"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title><script type="text/javascript" src="js/jquery-3.1.1.min.js"></script></head><body> ???<form action="file/upLoad" method="post" enctype="multipart/form-data"> ???????<input type="file" name="file"/> ???????<input type="submit" value="上传"/> ???</form></body></html>
注意:上传的文件的input需要写入name并且唯一
6、java后台
@RequestMapping(value="/file")@Controllerpublic class FileController { ???????@RequestMapping(value="/init") ???public String init(){ ???????????????return "file"; ???} ???????@RequestMapping(value="/upLoad") ???@ResponseBody ???public void upLoad(HttpServletRequest request) throws Exception{ ???????????????//创建一个多分解的容器 ???????CommonsMultipartResolver cmr = new CommonsMultipartResolver(request.getSession().getServletContext()); ???????//设置编码 ???????cmr.setDefaultEncoding("utf-8"); ???????//判断是否有文件上传 ???????if(cmr.isMultipart(request)){ ???????????//将request转换成多分解请求 ???????????MultipartHttpServletRequest mhs = cmr.resolveMultipart(request); ???????????//根据input中存在的name来获取是否存在上传文件 ???????????MultipartFile mf = mhs.getFile("file");#这里可以用getFiles("file")的方式来处理多个文件。返回的是一个list.然后一个一个处理就可以了 ???????????//创建文件保存名 ???????????File file = new File(mf.getOriginalFilename()); ???????????//上传文件 ???????????mf.transferTo(file); ???????} ???}}
多文件上传CommonsMultipartResolver
原文地址:https://www.cnblogs.com/ljc1212/p/9009890.html