转自:https://www.cnblogs.com/896240130Master/p/6430908.html

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>

第二个使用步骤: 这个就不要导包---建议用这个

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> <!--2 注册上传 StandardServletMultipartResolver
第二个不需要第三方 jar 包支持,它使用 servlet 内置的上传功能,
但是只能在 Servlet 3 以上的版本使用。
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"> </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> <multipart-config>
<!-- 上传文件的大小限制,比如下面表示 5 M -->
<max-file-size>5242880</max-file-size>
<!-- 一次表单提交中文件的大小限制,必须下面代表 10 M -->
<max-request-size>10485760</max-request-size>
<!-- 多大的文件会被自动保存到硬盘上。0 代表所有 -->
<file-size-threshold>0</file-size-threshold>
</multipart-config>
</servlet> <servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

其他的都是一样的。

imgTest .java  和html 这个代码都是和上面的不变!

最新文章

  1. IOS数据存储之归档/解档
  2. CSS之元素选择器
  3. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)
  4. 《静静的dojo》 总体教程介绍
  5. 基于iSCSI的SQL Server 2012群集测试(四)--模拟群集故障转移
  6. 用 CNTK 搞深度学习 (一) 入门
  7. eclipse debug 过滤一些包
  8. 剑指Offer14 逆序链表
  9. attribute section的用法
  10. Java-struts2 之中文乱码问题
  11. sphinx全文检索之PHP使用教程
  12. 深入浅出Win32多线程程序设计之基本概念
  13. C++11改进我们的程序之简化我们的程序1
  14. Activiti引擎启动失败
  15. MySql全文索引
  16. [Java] SpringMVC工作原理之一:DispatcherServlet
  17. 升级Jenkins版本
  18. TypeScript笔记
  19. c++创建二维动态数组与内存释放
  20. percona-toolkit大表操作DDL使用

热门文章

  1. 两行代码搞定UI主流框架
  2. 希尔排序(shell)
  3. noj 2033 一页书的书 [ dp + 组合数 ]
  4. Spring注解 @Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析
  5. webstorm初始化
  6. Educational Codeforces Round 50 (Rated for Div. 2) E. Covered Points
  7. IP聚合 ---百度之星(与运算)
  8. memcached源代码分析-----set命令处理流程
  9. Linux信号通讯编程
  10. 从头认识Spring-3.1 简单的AOP日志实现-某方法之前的前后记录日志