SSM-SpringMVC-32:SpringMVC中灌顶传授文件上传
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------
我将用自认为最简单的语言,描述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中灌顶传授文件上传的更多相关文章
- Spring中MultipartHttpServletRequest实现文件上传
Spring中MultipartHttpServletRequest实现文件上传 转贴自:http://my.oschina.net/nyniuch/blog/185266 实现图片上传 用户必须能 ...
- ASP.NET 中对大文件上传的简单处理
在 ASP.NET 开发的过程中,文件上传往往使用自带的 FileUpload 控件,可是用过的人都知道,这个控件的局限性十分大,最大的问题就在于上传大文件时让开发者尤为的头疼,而且,上传时无法方便的 ...
- 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s
1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2 spring-mv ...
- springMVC两种方式实现多文件上传及效率比较
springMVC实现 多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传.这两种方式对于实 现多文件上传效率上却有着很大的 ...
- springMVC+spring+mybatis整合(包括文件上传和下载)
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncod ...
- struts2中简单的文件上传
2016-08-31 一. 文件上传 利用commons-fileupload-1.2.1.jar实现简单的上传文件,首先在页面上填写表单,记得加上enctype="multip ...
- SecureCRT中的ftp文件上传
原文地址:http://www.blogbus.com/jjuan-flake-logs/59745331.html SecureCRT与SshClient不同的就是,SecureCRT没有图形化的文 ...
- Spring中MultipartHttpServletRequest实现文件上传 生成缩略图
转贴自:http://my.oschina.net/nyniuch/blog/185266 实现图片上传 用户必须能够上传图片,因此需要文件上传的功能.比较常见的文件上传组件有Commons Fil ...
- ASP.NET中的FileUpload文件上传控件的使用
本篇文章教大家如何将客户端的图片或者文件上传到服务器: 无论是上传图片(.jpg .png .gif等等) 文档(word excel ppt 等等). 第一步:放入以下三个控件 Image控件,Fi ...
随机推荐
- ANDROID 中设计模式的采用--创建型模式
所谓模式就是在某一情景下解决某个问题的固定解决方案. 所有的创建型模式都是用作对象的创建或实例化的解决方案. 1 简单工厂模式 创建对象的最简单方法是使用new来创建一个对象,如果只创建一种固定 ...
- This version of the rendering library is more recent than your version of ADT plug-in. Please update
预览layout.xml文件时提示: This version of the rendering library is more recent than your version of ADT plu ...
- 如何修改SpriteBuilder中的按钮禁用启用状态
按钮的禁用状态和按钮的User Interaction Enabled属性并不相符. 后者设定的是按钮是否参与用户交互. 你不能直接在SpriteBuilder中编译按钮的禁用启用属性.除非你想给按钮 ...
- Shell Script - 追踪与debug
[root@www ~]# sh [-nvx] scripts.sh 选项与参数: -n :不要运行 script,仅查询语法的问题: -v :再运行 sccript 前,先将 scripts 的内容 ...
- Slop One 算法
Slope One 算法是由 Daniel Lemire 教授在 2005 年提出的一个 Item-Based 推荐算法. Slope One 算法试图同时满足这样的的 5 个目标: 易于实现和维护: ...
- Xcode and #pragma mark
原帖地址:http://macdevelopertips.com/xcode/xcode-and-pragma-mark.html I've started using #pragma mark di ...
- 恶补web之三:http学习
http是超文本传输协议的简称,该协议设计目的是保证客户机与服务器之间的通信.http的工作方式为客户机与服务器之间的请求-应答协议. 一般来说web浏览器是客户端,计算机上的网络应用程序可能作为服务 ...
- Android开发 PopupWindow弹窗调用第三方地图(百度,高德)实现导航功能
博客描述:后台返回地点的经纬度在地图上进行描点,点击导航弹出PopupWindow进行选择地图操作,如果手机中没有安装地图,提示没有,否则传值调起地图进行导航操作 看一下实现的效果,没图说再多都白搭 ...
- 使用javascript中读取Xml文件做成的一个二级联动菜单
[html] view plaincopy <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ...
- Mybatis与Ibatis比较
随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis 虽然从正式版发布至今也有近一年时间,官方也非常友好的提供了中文版的使用手册,不过相信很多人还在项目中使用iba ...