打包
package com.landray.kmss.hls.manageFile.util;
import java.io.*;
import java.net.URLEncoder;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.http.HttpServletResponse;
public class ZipUtils {
public static void createZipFile(HttpServletResponse response, List<File> files,List<String> fileNames,String zipName) {
ZipOutputStream zipStream = null;
response.setContentType("application/x-zip-compressed");
response.setHeader("Cache-Control", "max-age=0");
try {
response.setHeader("Content-Disposition ", "attachment; filename=" +URLEncoder.encode(zipName+".zip", "UTF-8") );
OutputStream os = response.getOutputStream();
zipStream = new ZipOutputStream(os);
for (int i=0;i< files.size();i++){
File file=files.get(i);
compressZip(file, zipStream, fileNames.get(i));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (zipStream != null) {
zipStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void compressZip(File file, ZipOutputStream zipStream,String alias) throws Exception{
FileInputStream input = null;
try {
input = new FileInputStream(file);
zip(input, zipStream, alias);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(input != null)
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void zip(InputStream input, ZipOutputStream zipStream, String zipEntryName) throws Exception{
byte[] bytes = null;
BufferedInputStream bufferStream = null;
try {
if(input == null) {
throw new Exception("获取压缩的数据项失败! 数据项名为:" + zipEntryName);
}
ZipEntry zipEntry = new ZipEntry(zipEntryName);
zipStream.putNextEntry(zipEntry);
bytes = new byte[1024 * 5];
bufferStream = new BufferedInputStream(input);
int read = 0;
while ((read = bufferStream.read(bytes)) != -1) {
zipStream.write(bytes, 0, read);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (null != bufferStream)
bufferStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
下载
public ActionForward downloadAtt(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
TimeCounter.logCurrentTime("Action-deleteall", true, getClass());
KmssMessages messages = new KmssMessages();
try {
String[] parameterValues = request.getParameterValues("ids");
String[] split = null;
if(parameterValues.length>0){
split = parameterValues[0].split(",");
}else{
return null;
}
List<File> tempList=new ArrayList<File>();
List<String> fileNameList=new ArrayList<String>();
for (String string : split) {
List<HlsManageFileDetl> fileDetlList = getHlsManageFileDetlService().findList(" hlsManageFileDetl.fdManagefileNum.fdId = '" + string + "' AND fdIsNew = 1", " fdEdition desc ");
HlsManageFileDetl fileDetl;
if(fileDetlList.size()>0){
fileDetl = fileDetlList.get(0);
List<SysAttMain> onlineAtt = getSysAttMainService().findByModelKey( ModelUtil.getModelClassName("com.landray.kmss.hls.manageFile.model.HlsManageFileMain"),fileDetl.getDocMain().getFdId(), fileDetl.getAttpublishKey());
if(onlineAtt.size()>0){
SysAttMain sysAttMain = onlineAtt.get(0);
SysAttFile sysAttFile = getSysAttUploadService().getFileById(onlineAtt.get(0).getFdFileId());
tempList.add(new File(getSysAttUploadService().getAbsouluteFilePath(sysAttFile)));
fileNameList.add(sysAttMain.getFdFileName());
}
}else{
continue;
}
}
ZipUtils.createZipFile(response, tempList,fileNameList,"质量文件");
} catch (Exception e) {
messages.addError(e);
}
return null;
}