67,550
社区成员




try {
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(strZipPath));
// 需要同时下载的多个文件
// 遍历文件夹,组装文件目录
Set<Integer> keys = folderMap.keySet();
for (Integer key : keys) {
HashMap<String, String> valueItem = folderMap.get(key);
// 绝对路径文件名(格式:/ljzsg/fastdfs/file/data/00/06/wKgD91vHCPuAJdNzAAEn6ED7yKg207.jpg)
String urlPath = valueItem.get("url");
// 全路径文件名(格式:测试\2\2.jpg)
String fullPathName = valueItem.get("fullPathName");
if (FileType.FILE.getValue().toString().equals(valueItem.get("type"))) {// 类型为文件,则打包下载
if (null != urlPath && !"".equals(urlPath)
&& null != fullPathName && !"".equals(fullPathName)) {
//java.io.File f = new java.io.File(absolutePathName);
//FileInputStream fis = new FileInputStream(f);
BufferedInputStream in = dfsClient.downLoad(urlPath);
out.putNextEntry(new ZipEntry(fullPathName));
// 设置压缩文件内的字符编码,不然会变成乱码
out.setEncoding("GBK");
int len;
// 读入需要下载的文件的内容,打包到zip文件
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
out.closeEntry();
in.close();
}
} else if (FileType.DEMAND_FOLDER.getValue().toString().equals(valueItem.get("type"))
|| FileType.DEMAND_REFERENCE_SUB_FOLDER.getValue().toString().equals(valueItem.get("type"))
|| FileType.INTERPOSE_REFERENCE_SUB_FOLDER.getValue().toString().equals(valueItem.get("type"))
|| FileType.VALIDATE_REFERENCE_SUB_FOLDER.getValue().toString().equals(valueItem.get("type"))
|| FileType.OTHER_FOLDER.getValue().toString().equals(valueItem.get("type"))) {// 类型为文件夹,则打包空文件夹
if (null != fullPathName && !"".equals(fullPathName)) {
out.putNextEntry(new ZipEntry(fullPathName + java.io.File.separator));
// 设置压缩文件内的字符编码,不然会变成乱码
out.setEncoding("GBK");
out.closeEntry();
}
}
}
out.close();
logger.info("download start");
logger.info("fileNameNoSufix=" + FileUtil.getFileNameNoEx(filename));
downloadFile(request, response, strZipPath, FileUtil.getFileNameNoEx(filename) + ".zip");
logger.info("download end");
java.io.File temp = new java.io.File(strZipPath);
if (temp.exists()) {
temp.delete();
logger.info("delete zip file.");
}
} catch (Exception e) {
logger.error(ReturnCode.ERR_DOWNLOAD_FAILED + "", e);
}