//先在表单放一个文件下载按钮,下列脚本写在文件下载路径里,已测试4.4版本可以正常批量下载以及(除第一份复制文件无法删除外其余均可删除)
(function(){
var ZipUtil = new Packages.cn.myapps.util.file.ZipUtil();
var FileUtil = new Packages.cn.myapps.util.file.FileUtil();
var JSONArray = new Packages.net.sf.json.JSONArray();
var fileString = getItemValueAsString("stamp_document");//文件上传的控件名称
var fileArr = JSONArray.fromObject(fileString);
var rootPath = new Packages.cn.myapps.util.property.PropertyUtil().getPath();//获取根目录
var files = [];//压缩文件集合
var destFolder = rootPath + "/uploads/zipFile";//压缩文件目录
var copyFolder = destFolder + "/copyFile";//复制文件目录
var folders = new Packages.java.io.File(copyFolder);//java io流
if(!folders.exists()){
folders.mkdirs();//mkdirs()创建文件夹
}
var index = 1;//重名记录次数
for (var iterator = fileArr.iterator(); iterator.hasNext();) {
var file = iterator.next();
var path = rootPath + file.getString("path");
var name = file.getString("name");
var fileType = name.substring(name.lastIndexOf("."));
var newPath = copyFolder + "/" + name; //复制的文件路径(把id文件名转成对应的文件名)
if (new Packages.java.io.File(newPath).exists()) {
newPath = copyFolder + "/" + name.replace(fileType, index + fileType);
index++;
}
FileUtil.copyFile(newPath, path);
files.push(newPath);//将文件路径存进数组
}
var zipName = "盖章资料";//压缩文件名
ZipUtil.compressFiles(zipName, files, destFolder);
var VirtualFileSystemUtils = new Packages.cn.myapps.runtime.common.utils.fs.VirtualFileSystemUtils();
for (var i = 1; i < files.length; i++) {//因java.io流的问题,会出现第一个复制的文件删除不掉,因此数组索引从1开始删除,每次打包的zip文件会遗留第一个无法删除,测试时在表单的计算脚本可以全部删除文件(因此剩余文件问题另外写计算脚本定时删除)
VirtualFileSystemUtils.deleteFile(files[i].replace("\\","/"));
}
//文件下载路径
var downloacUrl = "/uploads/zipFile/" + zipName + ".zip";
return downloacUrl;
})() |