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文件
```javascriptmacro (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();
Setkeys=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; } }