Spring MVC文件上传教程
1- 介绍
2- 创建工程
- File/New/Other..
输入:
- Group ID: com.yiibai
- Artifact ID: SpringMVCFileUpload
- Package: com.yiibai.springmvcfileupload
这样,工程就被创建了,如下图所示:

不要担心项目被创建时有错误消息。原因是,你还没有声明的Servlet库。
注意:

3- 配置Maven
- 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/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.yiibai</groupId>
- <artifactId>SpringMVCFileUpload</artifactId>
- <packaging>war</packaging>
- <version>0.0.1-SNAPSHOT</version>
- <name>SpringMVCFileUpload Maven Webapp</name>
- <url>http://maven.apache.org</url>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- <!-- Servlet API -->
- <!-- http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- <scope>provided</scope>
- </dependency>
- <!-- Jstl for jsp page -->
- <!-- http://mvnrepository.com/artifact/javax.servlet/jstl -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jstl</artifactId>
- <version>1.2</version>
- </dependency>
- <!-- JSP API -->
- <!-- http://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
- <dependency>
- <groupId>javax.servlet.jsp</groupId>
- <artifactId>jsp-api</artifactId>
- <version>2.2</version>
- <scope>provided</scope>
- </dependency>
- <!-- Spring dependencies -->
- <!-- http://mvnrepository.com/artifact/org.springframework/spring-core -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>4.1.4.RELEASE</version>
- </dependency>
- <!-- http://mvnrepository.com/artifact/org.springframework/spring-web -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>4.1.4.RELEASE</version>
- </dependency>
- <!-- http://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>4.1.4.RELEASE</version>
- </dependency>
- <!-- Apache Commons FileUpload -->
- <!-- http://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.3.1</version>
- </dependency>
- <!-- Apache Commons IO -->
- <!-- http://mvnrepository.com/artifact/commons-io/commons-io -->
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.4</version>
- </dependency>
- </dependencies>
- <build>
- <finalName>SpringMVCFileUpload</finalName>
- <plugins>
- <!-- Config: Maven Tomcat Plugin -->
- <!-- http://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
- <plugin>
- <groupId>org.apache.tomcat.maven</groupId>
- <artifactId>tomcat7-maven-plugin</artifactId>
- <version>2.2</version>
- <!-- Config: contextPath and Port (Default - /SpringMVCFileUpload : 8080) -->
- <!--
- <configuration>
- <path>/</path>
- <port>8899</port>
- </configuration>
- -->
- </plugin>
- </plugins>
- </build>
- </project>
4- 配置Spring
配置 web.xml.
- WEB-INF/web.xml
- <web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <display-name>Archetype Created Web Application</display-name>
- <servlet>
- <servlet-name>spring-mvc</servlet-name>
- <servlet-class>
- org.springframework.web.servlet.DispatcherServlet
- </servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>spring-mvc</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- <!-- Other XML Configuration -->
- <!-- Load by Spring ContextLoaderListener -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- /WEB-INF/root-context.xml
- </param-value>
- </context-param>
- <!-- Spring ContextLoaderListener -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- </web-app>
- WEB-INF/spring-mvc-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:p="http://www.springframework.org/schema/p"
- 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-4.1.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-4.1.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
- <!-- Package Scan -->
- <context:component-scan base-package="com.yiibai.springmvcfileupload" />
- <!-- Enables the Spring MVC Annotation Configuration -->
- <context:annotation-config />
- <bean
- class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix">
- <value>/WEB-INF/pages/</value>
- </property>
- <property name="suffix">
- <value>.jsp</value>
- </property>
- </bean>
- <bean id="multipartResolver"
- class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- <!-- Maximum file size: 1MB -->
- <!-- 1MB = 125000 Byte -->
- <property name="maxUploadSize" value="125000" />
- </bean>
- </beans>
- WEB-INF/root-context.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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
- <!-- Empty -->
- </beans>
5- Java类
- MyFileUploadController.java
- package com.yiibai.springmvcfileupload;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.util.ArrayList;
- import java.util.List;
- import javax.servlet.http.HttpServletRequest;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.multipart.MultipartFile;
- @Controller
- public class MyFileUploadController {
- // Upload One File.
- @RequestMapping(value = "/uploadOneFile")
- public String uploadOneFileHandler() {
- // Forward to "/WEB-INF/pages/uploadOneFile.jsp".
- return "uploadOneFile";
- }
- // Upload Multi File.
- @RequestMapping(value = "/uploadMultiFile")
- public String uploadMultiFileHandler() {
- // Forward to "/WEB-INF/pages/uploadMultiFile.jsp".
- return "uploadMultiFile";
- }
- // uploadOneFile.jsp, uploadMultiFile.jsp submit to.
- @RequestMapping(value = "/doUpload", method = RequestMethod.POST)
- public String uploadFileHandler(HttpServletRequest request, Model model,
- @RequestParam("file") MultipartFile[] files) {
- // Root Directory.
- String uploadRootPath = request.getServletContext().getRealPath(
- "upload");
- System.out.println("uploadRootPath=" + uploadRootPath);
- File uploadRootDir = new File(uploadRootPath);
- //
- // Create directory if it not exists.
- if (!uploadRootDir.exists()) {
- uploadRootDir.mkdirs();
- }
- //
- List<File> uploadedFiles = new ArrayList<File>();
- for (int i = 0; i < files.length; i++) {
- MultipartFile file = files[i];
- // Client File Name
- String name = file.getOriginalFilename();
- System.out.println("Client File Name = " + name);
- if (name != null && name.length() > 0) {
- try {
- byte[] bytes = file.getBytes();
- // Create the file on server
- File serverFile = new File(uploadRootDir.getAbsolutePath()
- + File.separator + name);
- // Stream to write data to file in server.
- BufferedOutputStream stream = new BufferedOutputStream(
- new FileOutputStream(serverFile));
- stream.write(bytes);
- stream.close();
- //
- uploadedFiles.add(serverFile);
- System.out.println("Write file: " + serverFile);
- } catch (Exception e) {
- System.out.println("Error Write file: " + name);
- }
- }
- }
- model.addAttribute("uploadedFiles", uploadedFiles);
- return "uploadResult";
- }
- }
6- 视图(JSP)
- uploadOneFile.jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Upload One File</title>
- </head>
- <body>
- <h3>Upload One File:</h3>
- <form method="POST" action="doUpload" enctype="multipart/form-data">
- File to upload: <input type="file" name="file"><br />
- <input type="submit" value="Upload">
- </form>
- </body>
- </html>
- uploadMultiFile.jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Upload Multi File</title>
- </head>
- <body>
- <h3>Upload Multiple File:</h3>
- <form method="POST" action="doUpload" enctype="multipart/form-data">
- File to upload (1): <input type="file" name="file"><br />
- File to upload (2): <input type="file" name="file"><br />
- File to upload (3): <input type="file" name="file"><br />
- File to upload (4): <input type="file" name="file"><br />
- File to upload (5): <input type="file" name="file"><br />
- <input type="submit" value="Upload">
- </form>
- </body>
- </html>
- uploadResult.jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Upload Result</title>
- </head>
- <body>
- <h3>Uploaded Files:</h3>
- <c:forEach items="${uploadedFiles}" var="file">
- - ${file} <br>
- </c:forEach>
- </body>
- </html>
7- 运行应用程序



输入:
- Name: Run SpringMVCFileUpload
- Base directory: ${workspace_loc:/SpringMVCFileUpload}
- Goals: tomcat7:run
点击运行(Run):
- http://localhost:8080/SpringMVCFileUpload/uploadOneFile
- http://localhost:8080/SpringMVCFileUpload/uploadMultiFile
a
Spring MVC文件上传教程的更多相关文章
- Spring MVC文件上传教程 commons-io/commons-uploadfile
Spring MVC文件上传教程 commons-io/commons-uploadfile 用到的依赖jar包: commons-fileupload 1.3.1 commons-io 2.4 基于 ...
- Spring MVC 笔记 —— Spring MVC 文件上传
文件上传 配置MultipartResolver <bean id="multipartResolver" class="org.springframework.w ...
- 【Java Web开发学习】Spring MVC文件上传
[Java Web开发学习]Spring MVC文件上传 转载:https://www.cnblogs.com/yangchongxing/p/9290489.html 文件上传有两种实现方式,都比较 ...
- Spring mvc文件上传实现
Spring mvc文件上传实现 jsp页面客户端表单编写 三个要素: 1.表单项type="file" 2.表单的提交方式:post 3.表单的enctype属性是多部分表单形式 ...
- Spring mvc 文件上传到文件夹(转载+心得)
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...
- spring mvc 文件上传 ajax 异步上传
异常代码: 1.the request doesn't contain a multipart/form-data or multipart/mixed stream, content type he ...
- Spring MVC文件上传出现错误:Required MultipartFile parameter 'file' is not present
1.配置文件上传的解析器 首先需要在spring mvc的配置文件中(注意是spring mvc的配置文件而不是spring的配置文件:applicationContext.xml)配置: sprin ...
- spring mvc文件上传(单个文件上传|多个文件上传)
单个文件上传spring mvc 实现文件上传需要引入两个必须的jar包 1.所需jar包: commons-fileupload-1.3.1.jar ...
- Strut2 和Spring MVC 文件上传对比
在Java领域中,有两个常用的文件上传项目:一个是Apache组织Jakarta的Common-FileUpload组件 (http://commons.apache.org/proper/commo ...
随机推荐
- ylbtech-LanguageSamples-ExplicitInterface(显示接口)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-ExplicitInterface(显示接口) 1.A,示例(Sample) 返回顶部 ...
- jsp标签、 项目全路径引用${ctx}
请根据自己的需要选择以下标签. <%@ taglib uri="/struts-tags" prefix="s"%> <%@ taglib u ...
- Oracle中分页查询语句的写法
要动态的变化分页查询的条件,比如pageNow 这个变量表示的是当前是第几页, oracle分页有通用写法,假设一页5行 select * from ( select t.*,rownum rn fr ...
- What is Continuous Integration?
什么叫持续集成? 原文: https://docs.microsoft.com/en-us/azure/devops/what-is-continuous-integration ---------- ...
- zStack学习笔记(原创,绝对不是抄的……)
我之前写的文章都没写上面那句,但是这篇写了,主要是因为zStack文章抄袭太严重……故此声明 因为涉及到数据的双向交互问题,所以在这里我考虑使用协议栈来实现数据的收发.首先说下如何在Zstack中添加 ...
- Windows COM Surrogate 已停止工作怎么办
已解决 如何解决"COM Surrogate 已停止工作"问题 悬赏分:15 - 解决时间:2008-7-6 16:55 Vista系统,经常出现这个提示框,烦人. 我试了网上有关 ...
- zoj How Many Sets I(组合计数)
http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemId=4535 一个集合s有n个元素,求满足这种集合序列{s1,s2....sk}使S ...
- 初次玩耍lucene.net,一个小小的记录
lucene.net虽说是强大,但是我还是一年前第一次玩耍,然后就没有然后了,最近准备养成记录博客的习惯了,所以又玩了玩,回来记录一下 首先新建一个类,便于调用 public class Lucene ...
- 一种在MVC3框架里面设置模板页的方法,不使用_ViewStart
1.新建MasterFilterAttribute类继承ActionFilterAttribute,重写方法OnActionExecuted ,指定ViewResult的MasterName = &q ...
- Mysql命令行备份与还原数据库操作实例
无论是Windows还是Linux,都可以通过如下命令行形式备份Mysql数据库 备份命令: 在windows的DOS窗口命令行或linux的shell命令行,假设需要备份的数据库是advanced: ...