在easyui的框架中,使用ajax实现批量上传图片到服务器

来源:互联网 发布:成都软件测试公司 编辑:程序博客网 时间:2024/05/18 02:01

一、jsp页面<form></form>:

            <form  id="addProductForm" action="${ctx}/product/add" method="post" enctype="multipart/form-data">........</form>

二、页面ajax提交请求:

          var fd = new FormData(document.getElementById("addProductForm"));  // 不能用jquery的 $("#addProductForm")
            fd.append("label", "WEBUPLOAD");
          $.ajax({
               url: "${ctx}/product/doAdd",
               type: "POST",
               data: fd,
               enctype: 'multipart/form-data',
               processData: false,
               contentType: false
          }).done(function(data) {
                if(data.result){
                    closeWindow();
                    $('#productTable').datagrid('load');
              }
          });

三、controller代码:

            1、List<String> mfiles = new ArrayList<String>();
                  mfiles = BaseUtil.batchUploadPictures(request, mfiles);

            2、public static List<String>  batchUploadPictures(HttpServletRequest request, List<String> mfiles){
                  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
                  // 获取前台传值
                  Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        
                  StringBuffer dirSB = new StringBuffer(System.getProperty("web.root"));
                  dirSB.append(File.separator);
                  dirSB.append("upload");
                  dirSB.append(File.separator);
        
                  String dateDir = DateUtil.formatDatePattern(new Date(), "yyyyMM");
                  dirSB.append(dateDir);
                  dirSB.append(File.separator);
                  // 创建文件夹
                  File dir = new File(dirSB.toString());
                  if (!dir.exists()) {
                      dir.mkdirs();
                  }
        
                  for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                      // 上传文件名
                      MultipartFile mf = entity.getValue();
                      String fileName = mf.getOriginalFilename();
                      String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
                      SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
                      String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
                      try {
                          dirSB.append(newFileName);
                          FileCopyUtils.copy(mf.getBytes(), new File(dirSB.toString()));
                          mfiles.add("/upload/" + dateDir +"/"+ newFileName);
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
                  }
                  return mfiles;
              }

0 1