博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring mvc 多文件上传
阅读量:5867 次
发布时间:2019-06-19

本文共 5681 字,大约阅读时间需要 18 分钟。

hot3.png

jQuery Multiple File Upload Plugin(http://www.fyneworks.com/jquery/multiple-file-upload/)

首先我这里因为项目中使用的是 SpringMVC ,所以这边后台我就直接使用 Spring 中的 MultipartFile 中进行处理。

我们在 multifile 中可以很容易的发现如何使用,这里就简单说说了,首先在页面上我们需要有这样几行标签代码

      
      

然后在该页面中引入相关的JS和CSS

  
  
  
  

然后通过js和设置刚刚写入的标签

      $(function() {          //加载多
文件上传的JS          $('#multiFileId').MultiFile(                          {                              list : '#multiFileId-list',                              STRING : {                                  remove : '
'                              }                          });      });  

当然,上面的这段 JS 以及上面的 HTML 标签,我们可以根据实际的情况参考官网上的 Demo 上说明的属性进行设置。

Ok ,前台我们使用这个插件的地方基本就 ok 了,下面我们需要关心的是后台我们如何处理这里上传的多文件进行保存。在调研的过程中我将这一部分简单的写了一个工具类。

首先在 Controller 里接收

@RequestMapping(value="/uploadFile/upload.ac", method = RequestMethod.POST)      public String uploadFile(HttpServletRequest request,              HttpServletResponse response) {          List
 multipartFiles = UploadHelper.getFileSet(request, 1024 * 20, null);          String path = "D:" + File.separator;          if (multipartFiles.size() == 0) {              // TODO 给出提示,不允许没选择
文件点击上传            }          for (MultipartFile multipartFile : multipartFiles) {              try {                  String filePath = UploadHelper.uploadFile(multipartFile, path);                  System.out.println(filePath);              } catch (Exception e) {                  e.printStackTrace();              }              // 拿到的imgPath就是图片的相对于contextPath的存储路径了          }          return null;      }
package org.elongcom.common;    import java.io.File;  import java.util.Arrays;  import java.util.LinkedList;  import java.util.List;  import java.util.UUID;    import javax.servlet.http.HttpServletRequest;    import org.springframework.util.FileCopyUtils;  import org.springframework.web.multipart.MultipartFile;  import org.springframework.web.multipart.MultipartHttpServletRequest;    /**  * @author xdwang  *   * @create 2012-11-19 下午6:24:03  *   * @email:xdwangiflytek@gmail.com  *   * @description 上传帮助类  *   */  public class UploadHelper {        /**      * @descrption 根据HttpServletRequest对象获取MultipartFile集合      * @author xdwang      * @create 2012-11-19下午5:11:41      * @param request      * @param maxLength      *            文件最大限制      * @param allowExtName      *            不允许上传的文件扩展名      * @return MultipartFile集合      */      public static List
 getFileSet(HttpServletRequest request,              long maxLength, String[] allowExtName) {          MultipartHttpServletRequest multipartRequest = null;          try {              multipartRequest = (MultipartHttpServletRequest) request;          } catch (Exception e) {              return new LinkedList
();          }            List
 files = new LinkedList
();          files = multipartRequest.getFiles("attach");          // 移除不符合条件的          for (int i = 0; i < files.size(); i++) {              if (!validateFile(files.get(i), maxLength, allowExtName)) {                  files.remove(files.get(i));                  if (files.size() == 0) {                      return files;                  }              }          }          return files;      }        /**      * @descrption 保存
文件      * @author xdwang      * @create 2012-11-19下午4:17:36      * @param file      *            MultipartFile对象      * @param path      *            保存路径,如“D:\\File\\”      * @return 保存的全路径 如“D:\\File\\2345678.txt”      * @throws Exception      *             
文件保存失败      */      public static String uploadFile(MultipartFile file, String path)              throws Exception {            String filename = file.getOriginalFilename();          String extName = filename.substring(filename.lastIndexOf("."))                  .toLowerCase();          String lastFileName = UUID.randomUUID().toString() + extName;          if (!path.endsWith(File.separator)) {              path = path + File.separator;          }          File temp = new File(path);          if (!temp.isDirectory()) {              temp.mkdir();          }          // 图片存储的全路径          String fileFullPath = path + lastFileName;          FileCopyUtils.copy(file.getBytes(), new File(fileFullPath));          return fileFullPath;      }        /**      * @descrption 验证
文件格式,这里主要验证后缀名      * @author xdwang      * @create 2012-11-19下午4:08:12      * @param file      *            MultipartFile对象      * @param maxLength      *            
文件最大限制      * @param allowExtName      *            不允许上传的
文件扩展名      * @return 
文件格式是否合法      */      private static boolean validateFile(MultipartFile file, long maxLength,              String[] allowExtName) {          if (file.getSize() < 0 || file.getSize() > maxLength)              return false;          String filename = file.getOriginalFilename();            // 处理不选择
文件点击上传时,也会有MultipartFile对象,在此进行过滤          if (filename == "") {              return false;          }          String extName = filename.substring(filename.lastIndexOf("."))                  .toLowerCase();          if (allowExtName == null || allowExtName.length == 0                  || Arrays.binarySearch(allowExtName, extName) != -1) {              return true;          } else {              return false;          }      }    }

这里需要多说一点的是,表单提交时如果有文件进行上传时,需要在表单上设置enctype="multipart/form-data",否则上面的        multipartRequest = (MultipartHttpServletRequest) request;进行强转时会报错。

转载于:https://my.oschina.net/u/1582930/blog/307952

你可能感兴趣的文章
Linux时间子系统之(十三):Tick Device layer综述
查看>>
大杂烩 -- Iterator 并发修改异常ConcurrentModificationException
查看>>
UNIX环境高级编程(5):文件I/O(1)
查看>>
【消息队列MQ】各类MQ比较
查看>>
clear read-only status问题的解决
查看>>
设计网事封底根据用户体验要素五个层次推荐的书单
查看>>
行香子&#183;过尽千山
查看>>
nRF52832之硬件I2C
查看>>
阿里云linux图形界面(centos6)
查看>>
multipath多路径实验01-构建iSCSI模拟环境
查看>>
使用阿里云一年多个人经验之谈。(转)
查看>>
zookeeper应用场景之配置文件同步
查看>>
Angular4 组件通讯方法大全
查看>>
MacBook Pro使用初体验之Mac快捷键汇总(持续更新中)
查看>>
我佩服-WPF(2)
查看>>
让你不再害怕指针——C指针详解(经典,非常详细)
查看>>
c# Expression 扩展
查看>>
mongodb
查看>>
Machine Learning With Spark学习笔记(在10万电影数据上训练、使用推荐模型)
查看>>
Android四大基本组件之 Activity
查看>>