------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

我将用自认为最简单的语言,描述Springmvc的文件上传,来将老夫毕生功力灌顶传授给你

首先文件上传,又简至深

前提有吗?jar包,form表单里的属性(method="post" enctype="multipart/form-data")

jar包的节点我给出来:

        <!--文件上传的jar包-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.</version>
</dependency> <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>

下面我开始我第一个案例,最简单的文件上传:

  1.jsp页面:fileupload.jsp

<%--
Created by IntelliJ IDEA.
User: Dawn
Date: //
Time: :
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h1>文件上传</h1>
<form action="${pageContext.request.contextPath}/fileuploadfirst" method="post" enctype="multipart/form-data">
文件1 <input type="file" name="upload"/>
<input type="submit"/>
</form>
</body>
</html>

  success.jsp

<%--
Created by IntelliJ IDEA.
User: Dawn
Date: //
Time: :
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>成功</title>
</head>
<body>
<h1>SUCCESS</h1>
</body>
</html>

  2.在webapp下你jsp页面的那个包下创建一个文件夹,我的叫upload,里面随便扔个东西,编译后,如果即使这样target目录下还没有upload这个文件夹的话,就手动创建

  3.创建处理器和处理方法

package cn.dawn.day24fileupload;

import com.sun.org.glassfish.gmbal.ParameterNames;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException; /**
* Created by Dawn on 2018/4/2.
*/
@Controller
public class FileupLoad { /*最初始版本*/
@RequestMapping("/fileuploadfirst")
public String fileuploadfirst(MultipartFile upload, HttpSession session){
/*获取上传文件的简单名称例如 1.txt*/
String childrlPath = upload.getOriginalFilename();
/*获得一个真实路径*/
String parentPath = session.getServletContext().getRealPath("/day24/upload");
/*获取一个完整的文件对象*/
File file=new File(parentPath,childrlPath);
/*传输创建到本地*/
try {
upload.transferTo(file);
/*上传成功*/
return "success";
} catch (IOException e) {
e.printStackTrace();
} /*上传失败*/
return "fileupload";
}
}

  4.自己的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"
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"> <!--包扫描器-->
<context:component-scan base-package="cn.dawn.day24fileupload"></context:component-scan>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/day24/"></property>
<property name="suffix" value=".jsp"></property>
</bean> <!--多部分文件解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--文件名的编码-->
<property name="defaultEncoding" value="UTF-8"></property>
<!--限制文件大小--><!--这个单位是byte,我这儿限制的是20mb最大容量-->
<property name="maxUploadSize" value=""></property>
</bean> <!--绑定注解驱动-->
<mvc:annotation-driven></mvc:annotation-driven> </beans>

  5.web.xml中修改中央处理器的上下文配置参数为上面那个xml

  6.启动tomcat,访问fileupload.jsp页面

第二个案例:多文件上传

  1.jsp页面fileuploadmore.jsp:

<%--
Created by IntelliJ IDEA.
User: Dawn
Date: //
Time: :
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h1>文件上传</h1>
<form action="${pageContext.request.contextPath}/fileuploadsecond" method="post" enctype="multipart/form-data">
文件1 <input type="file" name="upload"/>
文件2 <input type="file" name="upload"/>
文件3 <input type="file" name="upload"/>
<input type="submit"/>
</form>
</body>
</html>

  success.jsp

<%--
Created by IntelliJ IDEA.
User: Dawn
Date: //
Time: :
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>成功</title>
</head>
<body>
<h1>SUCCESS</h1>
</body>
</html>

  2.处理器处理方法

package cn.dawn.day24fileupload;

import com.sun.org.glassfish.gmbal.ParameterNames;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException; /**
* Created by Dawn on 2018/4/2.
*/
@Controller
public class FileupLoad { /*多文件版本*/
@RequestMapping("/fileuploadsecond")
public String fileuploadsecond(@RequestParam MultipartFile[] upload, HttpSession session){
for (MultipartFile item :upload) {
if(item.getSize()>) {
/*获取上传文件的简单名称例如 1.txt*/
String childrlPath = item.getOriginalFilename();
/*获得一个真实路径*/
String parentPath = session.getServletContext().getRealPath("/day24/upload");
/*获取一个完整的文件对象*/
File file = new File(parentPath, childrlPath);
/*传输创建到本地*/
try {
item.transferTo(file);
/*上传成功*/ } catch (IOException e) {
e.printStackTrace();
return "fileuploadmore";
}
}
} /*上传失败*/
return "success";
} /*最初始版本*/
@RequestMapping("/fileuploadfirst")
public String fileuploadfirst(MultipartFile upload, HttpSession session){
/*获取上传文件的简单名称例如 1.txt*/
String childrlPath = upload.getOriginalFilename();
/*获得一个真实路径*/
String parentPath = session.getServletContext().getRealPath("/day24/upload");
/*获取一个完整的文件对象*/
File file=new File(parentPath,childrlPath);
/*传输创建到本地*/
try {
upload.transferTo(file);
/*上传成功*/
return "success";
} catch (IOException e) {
e.printStackTrace();
} /*上传失败*/
return "fileupload";
}
}

  3.自己的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"
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"> <!--包扫描器-->
<context:component-scan base-package="cn.dawn.day24fileupload"></context:component-scan>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/day24/"></property>
<property name="suffix" value=".jsp"></property>
</bean> <!--多部分文件解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--文件名的编码-->
<property name="defaultEncoding" value="UTF-8"></property>
<!--限制文件大小--><!--这个单位是byte,我这儿限制的是20mb最大容量-->
<property name="maxUploadSize" value=""></property>
</bean> <!--绑定注解驱动-->
<mvc:annotation-driven></mvc:annotation-driven> </beans>

  4.修改web.xml的中央调度器的上下文配置位置为上面那个xml

  5.在webapp下你jsp页面的那个包下创建一个文件夹,我的叫upload,里面随便扔个东西,编译后,如果即使这样target目录下还没有upload这个文件夹的话,就手动创建

  6.启动tomcat,访问fileuploadmore.jsp页面

SSM-SpringMVC-32:SpringMVC中灌顶传授文件上传的更多相关文章

  1. Spring中MultipartHttpServletRequest实现文件上传

    Spring中MultipartHttpServletRequest实现文件上传 转贴自:http://my.oschina.net/nyniuch/blog/185266 实现图片上传  用户必须能 ...

  2. ASP.NET 中对大文件上传的简单处理

    在 ASP.NET 开发的过程中,文件上传往往使用自带的 FileUpload 控件,可是用过的人都知道,这个控件的局限性十分大,最大的问题就在于上传大文件时让开发者尤为的头疼,而且,上传时无法方便的 ...

  3. 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

     1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mv ...

  4. springMVC两种方式实现多文件上传及效率比较

    springMVC实现 多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传.这两种方式对于实 现多文件上传效率上却有着很大的 ...

  5. springMVC+spring+mybatis整合(包括文件上传和下载)

    driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncod ...

  6. struts2中简单的文件上传

    2016-08-31 一.       文件上传 利用commons-fileupload-1.2.1.jar实现简单的上传文件,首先在页面上填写表单,记得加上enctype="multip ...

  7. SecureCRT中的ftp文件上传

    原文地址:http://www.blogbus.com/jjuan-flake-logs/59745331.html SecureCRT与SshClient不同的就是,SecureCRT没有图形化的文 ...

  8. Spring中MultipartHttpServletRequest实现文件上传 生成缩略图

    转贴自:http://my.oschina.net/nyniuch/blog/185266 实现图片上传  用户必须能够上传图片,因此需要文件上传的功能.比较常见的文件上传组件有Commons Fil ...

  9. ASP.NET中的FileUpload文件上传控件的使用

    本篇文章教大家如何将客户端的图片或者文件上传到服务器: 无论是上传图片(.jpg .png .gif等等) 文档(word excel ppt 等等). 第一步:放入以下三个控件 Image控件,Fi ...

随机推荐

  1. AngularJS进阶(十八)在AngularJS应用中集成科大讯飞语音输入功能

    在AngularJS应用中集成科大讯飞语音输入功能 注:请点击此处进行充电! 前言 根据项目需求,需要在首页搜索框中添加语音输入功能,考虑到科大讯飞语音业务的强大能力,遂决定使用科大讯飞语音输入第三方 ...

  2. 100个Myeclipse6.5免费注册码

    下面提供了100个MyEclipse6.5的注册码供大家使用: register name:cghidigfa Serial:pLR8ZC-855550-6359775146444620 ------ ...

  3. OpenCV 直线检测

    /*------------------------------------------------------------------------------------------*\ This ...

  4. 安卓笔记--intent传值不更新问题

    今天在学习安卓的过程中,遇到一个问题,就是用intent进行多次传值的话, 他永远是第一次的值 后来发现,intent接收数据被写到了onCreat();方法中,这时候finish();到上一个Act ...

  5. mybatis ---- 实现数据的增删改查

    前面介绍了接口方式的编程,需要注意的是:在book.xml文件中,<mapper namespace="com.mybatis.dao.IBookDao"> ,命名空间 ...

  6. 演进之美,越来越美:三分钟看尽 iOS 1 ~ iOS 8 的进化史

    演进之美,越来越美:三分钟看尽 iOS 1 ~ iOS 8 的进化史 原文出处: 少数派 9 月 18 日苹果就将推出 iOS 8 正式版了,从 2007 年发布第一代 iPhone 时搭载在 iPh ...

  7. Cookie、sessionStorage、localStorage的区别

    共同点:都是保存在浏览器端,且同源的.区别:cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递.而sessionStorage和localStora ...

  8. html5中新增的属性和删除的属性

    一.表单新增的属性 1.对input(type="text").select.textarea与button元素指定autofocus属性,它以指定属性的方式让元素在画面打开时自动 ...

  9. java中split分割"."的问题

    今天使用split分割"."的时候居然失败了,经过百度发现原来要加转义字符才行. 正确的写法: String test="1.2.3"; String[] s1 ...

  10. 单调队列——求m区间内的最小值

    单调队列,顾名思义是指队列内的元素是有序的,队头为当前的最大值(单调递减队列)或最小值(单调递增序列),以单调递减队列为例来看队列的入队和出队操作: 1.入队: 如果当前元素要进队,把当前元素和队尾元 ...