SpringMVC文件上传(转载)
来源:互联网 发布:英语四级真题软件 编辑:程序博客网 时间:2024/05/16 17:51
Spring已经为我们提供了一个MultipartResolver的实现,我们只需要拿来用就可以了,那就是org.springframework.web.multipart.commons.CommsMultipartResolver。因为springMVC的MultipartResolver底层使用的是Commons-fileupload,所以还需要加入对 Commons-fileupload.jar 的支持。如果你想使用springMVC对文件上传的解析器来处理文件上传的时候就需要在spring的applicationContext里面加上springMVC提供的MultipartResolver的申明。这样之后,客户端每次进行请求的时候,springMVC都会检查request里面是否包含多媒体信息,如果包含了就会使用MultipartResolver进行解析,springMVC会使用一个支持文件处理的MultipartHttpServletRequest来包裹当前的HttpServletRequest,然后使用MultipartHttpServletRequest就可以对文件进行处理了。
第一步
需要在applicationContext.xml文件中引入如下配置:
<!-- 多部分文件上传 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--设置允许上传的最大文件大小,以字节为单位计算。 当设为-1时表示无限制,默认是-1 --> <property name="maxUploadSize" value="104857600" /> <!--设置在文件上传时允许写到内存中的最大值, 以字节为单位计算,默认是10240 --> <!-- <property name="maxInMemorySize" value="4096" /> --> <!--属性启用是为了推迟文件解析,以便在UploadAction中捕获文件大小异常 --> <!-- <property name="resolveLazily" value="true"/> --> <!-- 设置上传文件时的临时目录,默认是Servlet容器的临时目录 --> <!--<property name="uploadTempDir" value=""/>--> <!--表示用来解析request请求的默认编码格式, 当没有指定的时候根据Servlet规范会使用默认值ISO-8859-1。 当request自己指明了它的编码格式的时候就会忽略这里指定的defaultEncoding --> <!-- <property name="defaultEncoding" value="UTF-8"></property> --></bean>
前端页面
注意:form表单必须加上enctype=”multipart/form-data”
<!--需要引入jquery 大家根据自己的路径引入--> <script type="text/javascript" src="jquery.min.js"></script> <form name="frm" id="frm" action="/demoAdmin/addFile" method="post" enctype="multipart/form-data"> <input type="file" name="file1" /> <input type="file" name="file2" /> <!-- 如果不需要异步 这里直接写submit按钮就可以 --> <!-- <input type="submit" value="上传" /> --> <!---点该按钮 异步提交--> <input type="button" onclick="upLoad();" value="上传" /> </form><script type="text/javascript" > //提交方法 function upLoad(){ //获取表单方式一: 这种方式是获取第一个表单 //var formData = new FormData($('form')[0]); //获取表单方式二:这种方式是得到name属性为frm的第一个表单元素 //var solform=$("form[name='frm']")[0]; //var formData= new FormData(solform); //获取表单方式三:这种是先得到所有表单,然后再遍历找到你需要的表单 var formData =null; var fs=$('form');//得到所有表单 for(var i=0;i<fs.length;i++){//遍历 if(fs[i].id=="frm"){//匹配表单id为frm的表单 formData= new FormData(fs[i]);//实例对象 } } $.ajax({ url: '/demoAdmin/addFile',//请求路径 type: 'POST',//提交方式 success: function(data){//成功方法 //判断返回success表示成功 if("success"==data){ }else{//否则失败 zzrw.alert("操作失败"); } },error:function(){//请求失败方法 zzrw.alert("系统繁忙,请稍后再试!"); }, data:formData,// Form表单数据 //设置jQuery不处理数据或担心的内容类型 cache: false, contentType: false, processData: false }); }</script>
后台处理方式一:
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import org.springframework.web.multipart.MultipartFile; import java.io.File; /** * 保存文件 * @param name 文件新的名称 * @param request * @return */ @RequestMapping(value = "addFile") @ResponseBody public String addFile(String name, HttpServletRequest request) { String result = "error"; DefaultMultipartHttpServletRequest MultipartRequest = (DefaultMultipartHttpServletRequest) request; Iterator<String> iter = MultipartRequest.getFileNames();//得到所有文件 String loadUrl="d://file";//上传路径 try { //判断下一个文件不为空,如果有多个可使用while循环遍历 if (iter.hasNext()) { //得到当前文件 MultipartFile file = MultipartRequest.getFile(iter.next()); //得到文件名称 String fileName = file.getOriginalFilename(); //得到文件后缀 String lastname = fileName.substring(fileName.lastIndexOf(".")); //构建新的文件名 String newfileName=name+lastname; // 创建文件对象,第一个参数是文件夹目录,第二个参数是文件名称 File target = new File(loadUrl,newfileName); //判断是否存在 if (!target.exists()) { target.mkdirs();//不存在则创建 } file.transferTo(target);//上传文件 result="success";//表示成功 } } catch (Exception e) { e.printStackTrace(); } return result; }
后台处理方式二:
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; /** * 保存文件 * @param name 文件名称 * @param file1 文件1 * @param file2 文件2 * @return */ @RequestMapping(value = "addFile") @ResponseBody public String saveOrUpdateOK(String name, @RequestParam("file1") MultipartFile file1, @RequestParam("file2") MultipartFile file2,HttpServletRequest request) { String result="error"; try{ //判断文件1不为空 if(!file1.isEmpty()) { //得到文件1名称 String fileName1 = file1.getOriginalFilename(); //得到文件1后缀名 String lastname1=fileName1.substring(fileName1.lastIndexOf(".")); //构建新的文件名 fileName1=name+"1"+lastname1; //创建文件对象,第一个参数是文件夹目录,第二个参数是文件名称 File target1 = new File("D:file",fileName1); //判断目录是否存在 if(!target1.exists()){ target1.mkdirs();//不存在则创建 } file1.transferTo(target1);//上传 } //判断文件2不为空 if(!file2.isEmpty()) { //得到文件2名称 String fileName2 = file2.getOriginalFilename(); //得到文件2后缀名 String lastname2=fileName2.substring(fileName2.lastIndexOf(".")); //构建新的文件名 fileName2=name+"2"+lastname2; //创建文件对象,第一个参数是文件夹目录,第二个参数是文件名称 File target2 = new File("D:file",fileName2); //判断目录是否存在 if(!target2.exists()){ target2.mkdirs();//不存在则创建 } file2.transferTo(target2);//上传 } result="success";//表示成功 }catch(Exception e){ e.printStackTrace(); } return result; }
转载地址
1 0
- SpringMVC文件上传(转载)
- SpringMVC上传文件的三种方式(转载)
- springMVC上传文件(11)
- springmvc上传文件(图片)
- SpringMVC文件上传(二)指定文件
- springMVC(11) springMVC文件上传
- SpringMVC-----8、SpringMVC上传文件
- springMVC上传文件优化(12)
- springMVC的文件上传(注解)
- springmvc学习笔记(九)文件上传
- SpringMVC多文件上传实例(转)
- Spring SpringMVC文件上传错误(一)
- Spring SpringMVC文件上传错误(二)
- SpringMVC之文件上传(进度条显示)
- springMVC上传文件(三种方法)
- SpringMvc上传文件(阿里云)
- SpringMVC学习笔记(六)上传文件
- springMVC 上传文件(spring4.0)
- win32应用程序消息机制(窗口的建立过程)
- C语言示例的反汇编生成以及堆栈调用分析
- 【Linux】管道容量及缓冲区的存储方式
- 数据库SQL优化大总结之 百万级数据库优化方案
- 单例模式
- SpringMVC文件上传(转载)
- HDU 5974
- 杭电 Is It A Tree? 并查集 有向图是否为树
- 文件拷贝-上传文件
- mvp模式
- 有道云markdown编辑代码前后高亮
- h5中使用canvas绘制线段、多边形、圆、圆弧
- log4j配置优化
- selenium+testng+gitblit+jenkins+ant自动化测试系列十:Jenkins配置自动化持续集成构建