fancy公用上传下载

fancy公用上传下载

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

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

    1.引用插件
    javascript <!--2019.1.15--> <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文件
    ```javascript

    macro (fileUploadSizablePanel $width $height $strID $actionFilePath $inputName $refType $refId $size)

    #if ($refId && \(refId != '') #set (\)fileObj = \(services.fileManager.findFileInfosByRef(\)refType, \(refId)) #else #set (\)fileObj = '')

    end



    end

    4.前台引用宏的地方html
    #fileUploadSizablePanel(670 60 'InnoAP' 'saveTemp.do' 'files' "$refType" $!document.id 10)
    5.点击add添加文件的时候,上传文件到服务器java
    //4.24增加
    @RequestMapping("/common/fileupload1.do")
    public void fileUpload1(HttpServletResponse response,HttpServletRequest request) throws IOException {
    MultipartHttpServletRequest req=(MultipartHttpServletRequest)request;
    Map map=req.getFileMap();
    Set 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.提交之后后台处理

    扫描二维码关注公众号,回复: 6191767 查看本文章
    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;
            }
    }
    

猜你喜欢

转载自www.cnblogs.com/guangxinliu/p/10844739.html