接:http://alog2012.iteye.com/admin/blogs/2040214
一、表单上传
1、引入jar:
- apache.commons-fileupload-1.3.jar
- apache.commons.io-2.4.0.jar
2、修改springmvc配置
<!-- id="multipartResolver"必须是multipartResolver --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- maxUploadSize:文件上传的最大值以byte为单位 --> <property name="maxUploadSize" value="1024000"></property> </bean> <!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException --> <!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,未进入到Controller方法中 --> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到fill_error.jsp页--> <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">fill_error</prop> </props> </property> </bean>
3、view层页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML> <html> <head> <base href="<%=basePath%>"> <title>SpringMVC fileUpload</title> </head> <body> <form action="test/upload1.do" method="post" enctype="multipart/form-data"> 选择文件1:<input type="file" name="files"> <input type="submit" value="上传"> </form> <form action="test/upload2.do" method="post" enctype="multipart/form-data"> 选择文件2:<input type="file" name="files"> <input type="submit" value="上传"> </form> </body> </html>
4、Controller控制器,接收表单文件
/** * 转向file.jsp * */ @RequestMapping("/tofile.do") public String tofile() { return "file"; } /** * 上传文件1 */ @RequestMapping(value = "/upload1.do") public String upload1(HttpServletRequest request) throws Exception { // 第一步转化request MultipartHttpServletRequest rm = (MultipartHttpServletRequest) request; // 获得文件 MultipartFile mfile = rm.getFile("files"); // 获得文件的字节数组 byte[] bfile = mfile.getBytes(); // 获得文件名 String fileName = mfile.getOriginalFilename(); System.out.println("fileName:" + fileName + "size:" + bfile.length); // 保存文件 savaFile(bfile, fileName); return "jsp1/index"; } /** * 上传文件2 */ @RequestMapping(value = "/upload2.do") public String upload2(@RequestParam("files") MultipartFile file) throws Exception { // 获得文件的字节数组 byte[] bfile = file.getBytes(); // 获得文件名 String fileName = file.getOriginalFilename(); System.out.println("fileName:" + fileName + "size:" + bfile.length); // 保存文件 savaFile(bfile, fileName); return "jsp1/index"; } /** * 将bfile写入c:/fileName * * @param bfile * @param fileName * @throws Exception */ private void savaFile(byte[] bfile, String fileName) throws Exception { // 定义文件的输出流 OutputStream out = new FileOutputStream(new File("C:/", fileName)); out.write(bfile); out.flush(); out.close(); }
二、使用ajaxfileupload上传文件
1、view层页面,引入js文件,这儿使用了“ajaxfileupload.js”
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML> <html> <head> <base href="<%=basePath%>"> <title>SpringMVC ajaxFileUpload</title> <script type="text/javascript" src="js/jquery-1.6.2.js"></script> <script type="text/javascript" src="js/ajaxfileupload.js"></script> <script type="text/javascript"> $("#mybutton").click(function(){ upload(); }); //上传源码 function upload() { $("#myupload").click(); } function uploadFile() { var fileName = $("#myupload").val(); $("#msgdiv p:first").before("您选择的文件为:"+fileName); //异步上传文件 ajaxFileUpload(fileName); } function ajaxFileUpload(fileName){ //执行上传文件操作的函数 $.ajaxFileUpload({ //处理文件上传操作的服务器端地址(可以传参数) url:"test/ajaxUpload.do", secureuri:false, //是否启用安全提交,默认为false fileElementId:'myupload', //文件选择框的id属性 dataType:'text', //服务器返回的格式,可以是json或xml等 success:function(data, status){ //服务器响应成功时的处理函数 $("#msgdiv p:first").before(data); }, error:function(data, status, e){ //服务器响应失败时的处理函数 $("#msgdiv p:first").before(e); } }); } </script> </head> <body> </body> <input id="myupload" name="myfiles" type="file" onchange="uploadFile()"/><br> <button id="mybutton">上传</button><br> <div id="msgdiv"><p></p></div> </html>
注意返回结果中带入了<pre>标签,可以使用如下方法去掉<pre>标签
//ajaxFileUpload会对服务器响应回来的text内容加上<pre style="....">text</pre>前后缀 data = data.replace(/<pre.*?>/g, ''); data = data.replace(/<PRE.*?>/g, ''); data = data.replace("<pre>", ''); data = data.replace("<PRE>", ''); data = data.replace("</pre>", ''); data = data.replace("</PRE>", '');
2、Controller控制器,
* 如果只是上传一个文件,则只需MultipartFile类型接收文件,而且无需显式指定@RequestParam注解
* 如果想上传多个文件,那么这里就要用MultipartFile[]类型来接收文件,且要指定@RequestParam注解
* 上传多个文件时,前台表单中的所有<input type="file"/>的name属性一致即可,此处为myfiles
* 否则参数里的myfiles无法获取到所有上传的文件
/** * 转向ajaxfile.jsp * */ @RequestMapping("/toajaxfile.do") public String toajaxfile() { return "ajaxfile"; } /** * 这里这里用的是MultipartFile[] myfiles参数,<br> * 所以前台就要用<input type="file" name="myfiles"/> */ @RequestMapping(value = "/ajaxUpload.do") public void ajaxUpload(@RequestParam MultipartFile[] myfiles, HttpServletRequest request, PrintWriter out) throws IOException { /** * 遍历文件,然后处理 */ // 上传文件的原名(即上传前的文件名字) String originalFilename = null; for (MultipartFile myfile : myfiles) { if (myfile.isEmpty()) { out.print("您没有选择文件!"); out.flush(); return; } if (myfile.getSize() > 10485760) { // 10485760=10*1024*1024 out.print("您选择的文件大于了10MB"); out.flush(); return; } // 处理文件 originalFilename = myfile.getOriginalFilename(); try { // 创建接收的新文件,此处还是保存在C盘 File savefile = new File("C:/", originalFilename); // commons.io.FileUtils类,它会自动判断保存位置是否存在,不存在则自动创建 FileUtils.copyInputStreamToFile(myfile.getInputStream(), savefile); // 结果显示回页面 out.print("上传成功!"); out.flush(); } catch (IOException e) { e.printStackTrace(); out.print("文件上传失败" + e.getMessage()); out.flush(); } } }
相关推荐
根据慕课网SpringMVC入门课程,IDEA社区版编写的SpringMVC小项目。里面包含单文件上传,JSON解析。
简单的springmvc框架 主要是用注解,实现用户信息保存,文件上传功能,适合初级学习使用。
SpringMVC文件上传案例,代码测试通过,可以当成一个入门案例进行参考学习。
Maven+SpringMVC+mybatis整合入门Demo 实现了用户登录和用户上传文件功能
SpringMVC+Spring+Spring JDBC + Maven 源码 模范乐乎基本登录注册文件上传等功能。spring 入门案例实战。包含数据库文件、图片文件等。
5、SpringMVC文件上传 6、SpringMVC+Spring完成练习 7、SpringMVC拦截器 8、SpringMVC异常处理机制 MyBatis部分: 1、MyBatis入门操作 2、MyBatis的Dao层实现方式 3、MyBatis的映射文件深入 4、MyBatis的核心文件...
Spring Web MVC是一种基于Java的实现了...支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。
本课程以通俗易懂的方式讲解SpringMVC核心技术,适合初学者的教程,让你少走弯路!1.SpringMVC简介和实现原理、Controller详解、方法的参数2.数据校验、类型转换、统一异常处理3.拦截器、处理AJAX、文件上传下载
本博客https://blog.csdn.net/qq_40634846由零基础入门Spring,有兴趣的同学可关注本博客
springmvc3.0帮助文档,带您快速入门
springMVC入门笔记,包括环境搭建、传递参数、从控制器获取参数、文件的上传、验证、异常的处理。
Java大数据培训学校视频教程:"java大数据培训学校全套教材"系列课程由750集视频构成,...本门课程为"java大数据培训学校全套教材"系列课程的第二十九篇,学习SpringMVC,框架技术 ,文件上传,文件下载,线程安全等。
Maven、SpringMVC、Mybatis、Mysql整合的入门实例,非常适合初学者参考,帮助初学者快速搭建框架。里面的配置都很简单,并有详细的注释
本课程以通俗易懂的方式讲解SpringMVC核心技术,适合初学者的教程,让你少走弯路!1.SpringMVC简介和实现原理、Controller详解、方法的参数2.JSR303数据校验、类型转换、统一异常处理...拦截器、处理AJAX、文件上传下载
7、包含了一个文件上传的功能,可上传单个或多个文件; 8、包含了数据表导出为Excel下载的功能,包含了解析Excel内容的API,使用POI实现; 9、包含了带验证码的登录功能以及登录权限验证的拦截器
此项目作为SSM入门基础整合项目。 技术栈: 后台:Spring、SpringMVC、MyBatis以及Pagehelper、JSR303的使用 前台:Bootstrap 项目管理:Maven、Git <项目介绍> 该资源内项目源码是个人的毕设,代码都测试ok,都是...
spring mvc入门资源,webstore项目贯穿始终,mvc,视图解析器,拦截器restfull,文件上传等方方面面
适合刚入门,对java框架不理解的同学学习;实现了对用户的增删改查和文件的上传,对配置有详细的注释
这个是入门spring mvc的Demo,是我学习spring mvc时写的,实现了spring mvc的输入校验,上传文件,和返回json数据时的配置,感觉对于初学者很有帮助