fancy公用上传下载
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文件
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;
}
}

更多精彩