package com.bstd.sys.server; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.JSONArray; import org.json.JSONException; import com.bstd.util.tool.MidLayer; public class downImg extends HttpServlet { private String filePath = null; private String downFilePath=null; /** * Servlet标准Get方法 * */ public void doGet(HttpServletRequest req, HttpServletResponse rep){ try { // 1 先打包。 this.createZIPFile(req, rep); // 2 在提供下载。 this.downImg(req, rep); // 下载图片 } catch (IOException e) { e.printStackTrace(); } } /** * Servlet标准Post方法 * */ public void doPost(HttpServletRequest req, HttpServletResponse rep) throws ServletException, IOException { doGet(req, rep); } public void createZIPFile(HttpServletRequest req, HttpServletResponse rep) throws IOException{ String nowpath = System.getProperty("user.dir"); filePath = nowpath.replace("bin", "webapps"); filePath += "\" + "tongjiImage"; File file = new File(filePath) ; // 定义要压缩的文件夹 downFilePath=filePath+"\统计图.zip"; // 定义压缩文件名称 File zipFile = new File(downFilePath); InputStream input = null ; // 定义文件输入流 ZipOutputStream zipOut = null ; // 声明压缩流对象 zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ; zipOut.setComment("统计图打包,提供下载") ; // 设置注释 int temp = 0 ; if(file.isDirectory()){ // 判断是否是文件夹 File lists[] = file.listFiles() ; // 列出全部文件 for(int i=0;i<lists.length;i++){ input = new FileInputStream(lists[i]) ; // 定义文件的输入流 zipOut.putNextEntry(new ZipEntry(file.getName() +File.separator+lists[i].getName())) ; // 设置ZipEntry对象 while((temp=input.read())!=-1){ // 读取内容 zipOut.write(temp) ; // 压缩输出 } input.close() ; // 关闭输入流 } } zipOut.close() ; // 关闭输出流 } public void downImg(HttpServletRequest req, HttpServletResponse rep){ try { // 以流的形式下载文件。 InputStream fis = new BufferedInputStream(new FileInputStream(downFilePath)); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 清空response rep.reset(); OutputStream toClient = new BufferedOutputStream(rep.getOutputStream()); rep.setContentType("application/zip"); //如果输出的是中文名的文件,在此处就要用URLEncoder.encode方法进行处理 rep.setHeader("Content-Disposition", "attachment;filename=" +URLEncoder.encode("统计图.zip", "UTF-8")); toClient.write(buffer); toClient.flush(); toClient.close(); } catch (IOException ex) { ex.printStackTrace(); }finally{ // 下载之后,进行删除 try { //File f = new File("E:\1111.zip"); // f.delete(); } catch (Exception e) { e.printStackTrace(); } } } }