fancy公用上传下载

  • 将fancy文件夹放在com.samsung.cs.quality.common.ui 下面的 webapp/csqCommon 的下面

  • fileUpload.vm文件公用上传下载

    1.引用插件
    html <link rel="stylesheet" type="text/css" href="/cs/csqCommon/fancy/style.css" /> <script type="text/javascript" src="/cs/csqCommon/fancy/mootools.js"></script> <script type="text/javascript" src="/cs/csqCommon/fancy/source/Fx.ProgressBar.js"></script> <script type="text/javascript" src="/cs/csqCommon/fancy/source/Swiff.Uploader.js"></script> <script type="text/javascript" src="/cs/csqCommon/fancy/source/FancyUpload3.Attach.js"></script>
    2.前台删除,新增,初始化的函数

          <script language="javascript">
    
        <!--2019.4.15-->
         function removeFiles(id){
    
          var val=document.getElementById("files").value;
          var v="";
          if(val!=''){
            var arr=val.split(",");
            if(arr.length==1){
               document.getElementById("files").value="";
            }else{
               for(var i=0;i<arr.length;i++){
                  if(arr[i]!=id){
                    v=v+arr[i]+",";
                  }
               }
               if(v!=""){
               //alert(v.substring(0,v.length-1));
                 document.getElementById("files").value=v.substring(0,v.length-1);
               }
            }
          }
    
        }
    
        function addFiles(id){
           var val=document.getElementById("files").value;
          if(val==''){
             val=id;
          }else{
            val=val+","+id;
          }
          //alert(val);
          document.getElementById("files").value=val;
        }
    
    
    
    
    
    
      function initFile(apObj, filename, filesize, fileid, resourceId, mimeType){
           var file=new FancyUpload3.Attach.File(up,{id:1,size:filesize,name:filename,status:3,validationError:null});
          file.render();
          file.ui.element.highlight('#e6efc2');
          file.ui.element.getElement('.file-progress').destroy();
          file.ui.element.getElement('.file-cancel').destroy();
          var s=resourceId+"|"+filename+"|"+mimeType+"|"+fileid;
          new Element('span', {'class': 'file-removed', text: 'remove'}).removeEvents().addEvent('click', function() {
                      file.ui.element.destroy();
                      removeFiles(s);
                      //alert(s);
                      return false;
                  }).inject(file.ui.size, 'after');
          file.ui.element.addEvent('dblclick',function(){
          var downUrl = "$contextPath/common/download/"+fileid;
          window.open(downUrl,"_blank","toolbar=0, status=0, scrollbars=yes, location=0, menubar=0, resizable=1")
          });     
          addFiles(s);
      }
      </script>

    3.html需要引用的宏,也是在fileupload.vm文件
     fancy公用上传下载 随笔

    SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

4.前台引用宏的地方

 <td colspan="3">#fileUploadSizablePanel(670 60 'InnoAP' 'saveTemp.do' 'files' "$refType" $!document.id 10)</td>

5.点击add添加文件的时候,上传文件到服务器

  //4.24增加
  @RequestMapping("/common/fileupload1.do")
  public void fileUpload1(HttpServletResponse response,HttpServletRequest request) throws IOException {
      MultipartHttpServletRequest req=(MultipartHttpServletRequest)request;
      Map map=req.getFileMap();
      Set<String> keys=map.keySet();
      MultipartFile file=null;
      for(String key :keys){
          file=(MultipartFile)map.get(key);
      }
      String fileNamesStr=file.getOriginalFilename();
      ServletContext servletContext = req.getSession().getServletContext();
      String mimeType = servletContext.getMimeType(fileNamesStr);
      System.out.println(file.getSize());
      IResource resource= resourceManager.save(file.getInputStream(),file.getSize());
      System.out.println(resource.getId());
      System.out.println(fileNamesStr);
      System.out.println(mimeType);
      String s=resource.getId()+"|"+fileNamesStr+"|"+mimeType+"|"+null;
      String results="{status:1,id:'"+s+"'}";
 
      ViewUtils.jsonData(response, results.toString());
  }


  
    public IResource save(InputStream in, long totalTransferLen) throws IOException  {
    MD5 md5 = new MD5();
    File tmpFile = File.createTempFile("TMP", ".TMP", new File(fileUploadPath));
    try {
      byte []buf = new byte[bufferSize];
      int len = 0;
      long totalLen = 0;
      totalTransferLen = totalTransferLen == -1 ? Long.MAX_VALUE : totalTransferLen;
      String compression = this.compression;
      OutputStream tmpOut = null;
      long transferLen = totalTransferLen;
      try {
        while ((len=in.read(buf, 0, (int)(transferLen > buf.length ? buf.length : transferLen))) > 0) {
          md5.engineUpdate(buf, 0, len);
          
          if (tmpOut == null) {
            if (!canCompress(buf, len)) {
              compression = null;
            }
            tmpOut = compressedStream(new FileOutputStream(tmpFile), compression);
          }
          tmpOut.write(buf, 0, len);
          
          totalLen += len;
          transferLen = totalTransferLen - totalLen;
          if (transferLen > buf.length) transferLen = buf.length;
        }
      } finally {
        if (tmpOut != null) {
          tmpOut.close();
        }
      }
      byte[] digest = md5.engineDigest();
      return save(null, tmpFile, totalLen, digest, buf, compression);
    } finally {
      if (tmpFile.exists()) tmpFile.delete();
    }
  }
  
  
    private IResource save(InputStream in, File tmpFile, long totalLen, byte[] digest, byte[] buf, String compression)
      throws FileNotFoundException, IOException {
    String md5 = digestToId(digest);
    File file = find(md5, totalLen, compression);
    File parentFile = file.getParentFile();
    String id = file.getParentFile().getName() + file.getName();
    if (file.exists()) {
      if (totalLen > 0 && CompressionUtil.fileSize(file) != totalLen) {
        throw new IllegalStateException("For md5 hash " + md5 + 
          " the file " + file + " exists " +
          "but has conflicting size. The size must be " + totalLen + " bytes, " +
          "but is " + file.length() + " bytes.");
      }
    } else {
      if (!parentFile.exists()) parentFile.mkdirs();
      if (tmpFile != null) {
        if (tmpFile.renameTo(file)) {
          return new ResourceInfo(id, file);
        } else in = new FileInputStream(tmpFile);
      }
      FileOutputStream out = new FileOutputStream(file);
      try {
        transfer(in, out, buf);
      } finally {
        out.close();
      }
    }
    return new ResourceInfo(id, file);
  }

6.前台提交
```javascript
function fn_save(){

            document.frm.submit();

}```

7.提交之后后台处理

public void saveCommFile(String refid, String[] files) throws Exception {
        List saveList = new ArrayList();
        List<String> notDeletes=new ArrayList<String>();
        for (int i = 0; i < files.length; i++) {
            String file = files[i];// 分别获取对应文件信息
            String[] fileAttr = file.split(",");
            String refId=null;
            for (int j = 0; j< fileAttr.length; j++) {
                if(fileAttr[j]==null || "".equals(fileAttr[j])){
                    continue;
                }
                String[] atts = fileAttr[j].split("\\|");
                Map m = new HashMap();
                String resourceId = atts[0];
                String fileName = atts[1];
                String mimeType = atts[2] == null || atts[2].equals("") || atts[2].equalsIgnoreCase("null") ? null:atts[2];
                //String fileSize = atts[3];
                String fileId = atts[3] == null || atts[3].equals("") || atts[3].equalsIgnoreCase("null") ? null
                        : atts[3];
                String refType = atts[atts.length - 1];
                m.put("RESOURCEID", atts[0]);
                m.put("MIMETYPE", mimeType);
                m.put("FILENAME", fileName);
                m.put("REFTYPE", refType);
                //m.put("FILE_SIZE",fileSize);
                m.put("IDX",String.valueOf(j));
                if(fileId==null){
                  IResource resource=resourceManager.find(resourceId,fileName,mimeType);
                  Long size=resource.getSize();
                  m.put("FILE_SIZE",size);
                 //获取size封装到savlist
                  saveList.add(m);
                }else{
                    notDeletes.add(fileId);                 
                }       
            }
        }
            
        List refTypes = new ArrayList();
        String old = null;
        Map map = new HashMap();
        for (int i = 0; i < saveList.size(); i++) {
            Map m = (Map) saveList.get(i);
            String ref = (String) m.get("REFTYPE");
            if (old == null || !ref.equals(old))
                refTypes.add(ref);
            old = ref;
        }
    

        Map attach = new HashMap();
        for (int i = 0; i < refTypes.size(); i++) {
            String ref = (String) refTypes.get(i);
            List filesAttach = new ArrayList();

            for (int k = 0; k < saveList.size(); k++) {
                Map m = (Map) saveList.get(k);
                if (ref.equals(m.get("REFTYPE")))
                    filesAttach.add(m.get("RESOURCEID"));
            }
            attach.put(ref, filesAttach);
        }
         if(notDeletes!=null){
              fileManager.deleteNotInIds(notDeletes, refid);
          }
        mICSCOMBaseDAO.insertCommFile2(refid, saveList);

        
    }
public void insertCommFile2(String refid, List fileList) throws Exception {

        Session currentSession = sessionFactory.getCurrentSession();
        try {
            SQLQuery query = currentSession.createSQLQuery("INSERT INTO COMM_FILE_OBJECT (ID,ENCODING,FILENAME,IDX,LASTMODIFIED,MIMETYPE,NODEPATH,REFID,REFTYPE,RESOURCEID,FILE_SIZE,TMP_ID,TEMP_MIGRATION_TYPE) " +
                                                           "VALUES(?,NULL,?,?,SYSTIMESTAMP,?,NULL,?,?,?,?,NULL,NULL)");
            for (int i = 0; i < fileList.size(); i++) {
                Map file = (Map)fileList.get(i);
                IFileObject eFile = new FileObject();
                
                eFile.setResourceId((String)file.get("RESOURCEID"));
                eFile.setFileName((String)file.get("FILENAME"));
                String mimeType = (String)file.get("MIMETYPE");
                if (mimeType == null) {
                  mimeType = CommonUtil.findMimeType((String)file.get("FILENAME"));
                }
                eFile.setMimeType(mimeType);
                eFile.setSize((Long)file.get("FILE_SIZE"));
               // eFile.setNodePath(null);
                eFile.setLastmodified(new Date());
                eFile.setIdx(i);
                eFile.setRefId(refid);
                eFile.setRefType((String)file.get("REFTYPE"));
                currentSession.saveOrUpdate(eFile);
                currentSession.flush();
            }
        }
        catch (Exception e) {
            e.printStackTrace();
            throw e;
        }
}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄