package com.comtop.product.taskform.catalogmanagement.action;
import javax.servlet.http.HttpServlet;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
import com.comtop.util.Toolkit;
import com.comtop.eaiform.TemplateInfo;
import com.comtop.product.taskform.delegate.TemplateMan;/**
* 作业表单ZIP包下载servlet
* @author 周波
* @since JDK1.4
* @History 2011年9月2日15:35:49 周波 新建*/publicclassDownTaskFormTemplate extends HttpServlet{/** 日志对象*/privatefinal Logger logger=Toolkit.getLogger(this.getClass().getName());publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
downloadTaskFrom(request, response);
}publicvoiddoPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
}/**下载作业表单ZIP包
*
**/publicvoiddownloadTaskFrom(HttpServletRequest request, HttpServletResponse
response)throws ServletException, IOException{//模板版本IDString template_version_id=request.getParameter("template_version_id");//ZIP包名String tempalteName=request.getParameter("template_Name");
ZipOutputStream zipOut=null;
InputStream ins=null;try{
response.reset();//下载zip文件名String strZipFileName=tempalteName+".zip";//得到输出流response.setHeader("Content-Disposition:","attachment;filename="+newString(strZipFileName.getBytes("gb2312"),"ISO8859_1"));
String path=this.getServletContext().getRealPath("");
StringBuffer sbPath=newStringBuffer(path);
sbPath.append("/temp/");//2011-5-10 确认是否存在temp文件夹,若不存在则先创建this.checkAndCreatePacakage(sbPath.toString());
sbPath.append(strZipFileName);
FileOutputStream objFileOutputStream=newFileOutputStream(newFile(sbPath.toString()));
zipOut=newZipOutputStream(objFileOutputStream);
TemplateMan objTemplateMan=newTemplateMan();
String[] files=objTemplateMan.getReportFile(template_version_id);//写入XML存储格式if(files[0]!=null){
writeXmlFile(zipOut,files[0],tempalteName+"存储格式.xml");
}//写入XML模板内容if(files[1]!=null){
writeXmlFile(zipOut,files[1],tempalteName+"模板内容.xml");
}//写入HTML内容if(files[2]!=null){
writeXmlFile(zipOut, files[2],tempalteName+"HTML内容.html");
}//下载标准模板//newDownStandarTemplate(packageId,zipOut);//关闭ZIP流if(zipOut!=null) {
zipOut.close();
}
writeOutStream(sbPath.toString(),response);
}catch(Exception e) {
logger.error("action.DownTaskFormTemplate.下载作业表单ZIP包出错!",e);
}
}privatevoidwriteXmlFile(ZipOutputStream zipOut,String file,String filwName){try{
zipOut.putNextEntry(newZipEntry(filwName));//转换为ZIP文件zipOut.write(file.getBytes("UTF-8"),0, file.getBytes("UTF-8").length);//关闭ZIP输出流zipOut.closeEntry();
}catch(Exception e){
logger.error("文件写入异常",e);
}
}/**
* 2011-09-02 周波 创建 确认是否存在文件夹,若不存在则创建
* @param filePath*/privatevoidcheckAndCreatePacakage(String filePath){
File objFile=newFile(filePath);if(!objFile.isDirectory()){
objFile.mkdirs();
}
}//输出流privatevoidwriteOutStream(String fileName,HttpServletResponse response)throws ServletException, IOException{
OutputStreamout=response.getOutputStream();
File objFile=newFile(fileName);
FileInputStream objFileInputStream=newFileInputStream(objFile);//定义缓存输入流BufferedInputStream objBufferedInputStream=newBufferedInputStream(objFileInputStream);//缓存区byte[] buffer=newbyte[5000];while(true) {//读入缓存输入流intbytesRead=objFileInputStream.read(buffer,0, buffer.length);if(bytesRead<0) {break;
}//写入输出流out.write(buffer,0, bytesRead);
}//关闭缓存输入流objBufferedInputStream.close();//关闭文件输入流objFileInputStream.close();//刷新和关闭输出流out.flush();out.close();//将临时文件删除objFile.delete();
}
}