公司的项目很多地方要用到文件上传,以前的上传主要是用apache的fileupload ,使用的感受并不太好。今天试了试spring的MultipartFile,感觉还不错,封装的比较简洁。

当然,中间也排除了不少坑。

1. 配置CommonsMultipartResolver

  1. <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver -->
  2. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  3. <property name="defaultEncoding" value="UTF-8"/>
  4. <property name="maxUploadSize" value="209715200"/>
  5. <property name="maxInMemorySize" value="4096"/>
  6. <property name="uploadTempDir" value="fileUpload/temp"/>
  7. </bean>

defaultEncoding="UTF-8" 是请求的编码格式,默认为iso-8859-1
maxUploadSize="209715200" 是上传文件的总的大小,单位为字节,我设置的是200M,
uploadTempDir="fileUpload/temp" 为上传文件的临时路径

2. 添加apache的 fileupload

  1. <dependency>
  2. <groupId>commons-fileupload</groupId>
  3. <artifactId>commons-fileupload</artifactId>
  4. <version>1.2.2</version>
  5. </dependency>

应该是multipartfile方式上传底层也会用到commons-fileupload

3.前端用了jquery file upload

  1. <span class="btn btn-success fileinput-button">
  2. <i class="glyphicon glyphicon-plus"></i>
  3. <span>选择文件...</span>
  4. <!-- The file input field used as target for the file upload widget -->
  5. <input id="fileupload" type="file" name="file[]" multiple>
  6. </span>
  7. #jquery file upload 没有采用form表单上传,是ajax方式向后台发送的请求,
    #如果是以表单形式提交上传请求,不要忘了加上enctype="multipart/form-data"
  8. ...
  9.  
  10. $('#fileupload').fileupload({
  11. url: "<%=request.getContextPath()%>/aaa/upload.do",
  12. sequentialUploads: true,
  13. singleFileUploads: false,
  14. add: function (e, data) {
  15. data.context = $('<button/>').text('Upload')
  16. .appendTo(document.body)
  17. .click(function () {
  18. data.context = $('<p/>').text('Uploading...').replaceAll($(this));
  19. data.submit();
  20. });
  21. },
  22. done: function (e, data) {
  23. $.each(data.files, function (index, file) {
  24. $('<p/>').text(file.name).appendTo(document.body);
  25. }); }
  26. });

jquery file upload 看起来还不错,就是中文的资料还是有点少,官网看的头大。

4.后台是我们的重点,其实我想说,我本来只是想周末找一个好用,好看的前端上传插件的,结果重点弄到后台来了。。

由于配置了CommonsMultipartResolver,文件上传请求HttpServletRequest会被解析为MultipartHttpServletRequest

  1. /**
  2. * 多文件上传
  3. *
  4. * @param multipartRequest
  5. * @return
  6. * @throws IOException
  7. */
  8. @ResponseBody
  9. @RequestMapping(value = "upload", method = RequestMethod.POST)
  10. public String handleImport(DefaultMultipartHttpServletRequest multipartRequest) throws IOException {
  11. if (multipartRequest != null) {
  12. Iterator<String> iterator = multipartRequest.getFileNames();
  13. while (iterator.hasNext()) {
  14.  
  15. // //单文件上传 。
  16. // MultipartFile file = multipartRequest.getFile(iterator.next());//一次传一个文件
  17. // if (StringUtils.hasText(file.getOriginalFilename())) {
  18. // file.transferTo(new File("E:/upload_" + file.getOriginalFilename()));
  19. // }
  20.  
  21. //多文件上传
  22. List<MultipartFile> fileList = multipartRequest.getFiles(iterator.next()); //一次选多个文件上传
  23. for (MultipartFile file : fileList) {
  24. if (StringUtils.hasText(file.getOriginalFilename())) {
  25. file.transferTo(new File("E:/upload_" + file.getOriginalFilename()));
  26. }
  27. }
  28. }
  29. }
  30. return "success";
  31. }

  1.  

MultipartFile 多文件上传的应用的更多相关文章

  1. 利用spring的MultipartFile实现文件上传【原】

    利用spring的MultipartFile实现文件上传 主要依赖jar包 spring-web-3.0.6.RELEASE.jar 用到 (org.springframework.web.multi ...

  2. SpringMvc MultipartFile 图片文件上传

    spring-servlet.xml <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipar ...

  3. SpringMVC 使用MultipartFile实现文件上传(转)

    http://blog.csdn.net/kouwoo/article/details/40507565 一.配置文件:SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们 ...

  4. SpringMVC中使用 MultipartFile 进行文件上传下载及删除

    一:引入必要的包 <!--文件上传--> <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fil ...

  5. SpringMVC 使用 MultipartFile 实现文件上传

    该代码实现了文件上传和文本字段同时传递到后台进行处理的功能. 直接贴代码,中间涉及到的实体类就不贴了,和功能没啥关系的. Controller /** * 添加活动 * * @param req * ...

  6. Spring MVC - MultipartFile实现文件上传(单文件与多文件上传)

    准备工作: 需要先搭建一个spirngmvc的maven项目 1.加入jar包 <dependency> <groupId>commons-fileupload</gro ...

  7. springMVC实现 MultipartFile 多文件上传

    1.Maven引入所需的 jar 包(或自行下载) <dependency> <groupId>commons-io</groupId> <artifactI ...

  8. MultipartFile实现文件上传

    一.主要有两个java类,和一般的servlet放在一起即可. 1.FileUploadBean.java package chb.demo.web;import org.springframewor ...

  9. 文件上传之 MultipartFile

    利用MultipartFile(组件)实现文件上传 在java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的Mult ...

随机推荐

  1. Java:Hashtable

    概要 前一章,我们学习了HashMap.这一章,我们对Hashtable进行学习.我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable.第1部分 Ha ...

  2. 过滤器(Filter)、拦截器(Interceptor)、监听器(Listener)

    一.Filter 过滤器 1.简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servle ...

  3. javabean的特点

    javabean的三个基础条件 1.拥有私有的属性 2.共有的get,set方法 3.默认的构造方法

  4. hdu 4911 Inversion and poj2299 [树状数组+离散化]

    题目 题意:  给你一串数字,然后给你最多进行k次交换(只能交换相邻的)问交换后的最小逆序对个数是多少. 给你一个序列,每次只能交换相邻的位置,把他交换成一个递增序列所需要的最少步数 等于 整个序列的 ...

  5. js-闪烁的文字

    <!DOCTYPE html><html>    <head lang="en">        <meta charset=" ...

  6. Repository 简化实现多条件查询

    Repository 在做查询的时候,如果查询条件多的话,linq查询表达式会写的很复杂,比如: public IQueryable<Student> Get(int id, string ...

  7. JQuery Mobile - input 属性为 number,maxlength不起作用如何解决?

    <input type="text"  maxlength="5" />   效果ok,当 <input type="number& ...

  8. Objective-C优缺点

    优点: 1:Category,使用category可以在不改变原来类的同时为类增加新的方法或者重写原来类的方法实现(使用runtime方法还可以在分类中实现方法交换和添加属性操作) 2:运行时 动态识 ...

  9. Redis 学习笔记(十二)Redis 复制功能详解 ----- (error) READONLY You can't write against a read only slave

    Redis 复制(Replication)1. 复制介绍分布式数据库为了获取更大的存储容量和更高的并发访问量,会将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上.Redis为了解决 ...

  10. 第二十三节:Java语言基础-详细讲解函数与数组

    函数 函数在Java中称为方法,在其他语言中可能称为函数,函数,方法就是定义在类中具有特定功能的程序.函数,在Java中可称为方法. 函数的格式: 修饰符 返回值类型 函数名(参数类型 参数1, 参数 ...