压缩文件zip格式,提供下载。

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();
                    }
            }
    }

}
时间: 2024-10-01 07:15:51

压缩文件zip格式,提供下载。的相关文章

java上传图片到数据库,涉及压缩文件zip/rar上传等

项目中有这个需求: 1)上传文件通过公司平台的校验,校验成功后,通过接口,返回文件流: 2)我们根据这个文件流进行操作.这里,先将文件流复制文件到项目临时目录WEB-INF/temp;文件使用完毕,删除之: 项目中用到了下面几点: 解压zip.rar文件: 临时文件存放,使用完毕删除之: 对压缩包中的图片进行裁剪,生成预览图,并保存: 根据产品族.产品类型.产品系列展示图片: 项目代码比较多,慢慢贴出来,不足之处欢迎指正. 1.项目结构: 2.相关代码: ProductController: p

压缩文件 .zip.001 .zip.002合并

可以把名字特别长的命名为1  这样简单些 copy /B 1.zip.001+1.zip.002 1.zip 压缩文件 .zip.001 .zip.002合并

列出zip文件内全部内容 当前目录下的所有文件压缩成zip格式的文件(file.zip)

[[email protected] Desktop]# zip -r image.zip ./*.jpg adding: 20161007_113743.jpg (deflated 0%) adding: 20161007_114943.jpg (deflated 0%) [[email protected] Desktop]# file image.zip image.zip: Zip archive data, at least v2.0 to extract [[email protec

使用 windows 批处理指令(BAT文件)进行压缩文件(zip)解压操作

以下指令包括文件删除.复制.zip文件解压操作.使用7z指令指令进行解压操作前,需要确保 windows 的 path 系统环境变量中存在7z的安装路径. 7z的下载地址:https://www.7-zip.org/download.html ::替换文件需要添加 /y 参数才能直接替换.不然会出现提示是否替换. ::复制Axis2Implementation和WebServices编译后的文件到tomcat的webapps\axis2\WEB-INF\services和modules目录下 @

文件打包,下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件

总结: 使用PHP下载文件的操作需要给出四个header(),可以参考我的另一篇博文:PHP如何实现下载功能超详细流程分析 计算文件的大小的时候,并不需要先打开文件,通过filesize($filename)就可以看出,如果需要先打开文件的话,filesize可能就会是这样的形式了filesize($filehandle) 向客户端回送数据的是,记得要设置一个buffer,用来指定每次向客户端输出多少数据,如:$buffer=1023.如果不指定的话,就会将整个文件全部写入内存当中,再一次性的讲

Linux学习---(文件的压缩和解压缩命令zip unzip tar、关机和重启命令shutdown reboot……)

1.压缩和解压缩命令    常用压缩格式:.zip..gz..bz2..tar.gz..tar.bz2..rar    .zip格式压缩和解压缩命令        zip 压缩文件名 源文件:压缩文件        zip -r 压缩文件名 源目录:压缩目录        unzip 压缩文件名:解压缩 .zip文件    .gz格式压缩和解压缩        gzip 源文件:压缩为.gz 格式的压缩文件,源文件会消失        gzip -c 源文件 > 压缩文件:压缩为.gz 格式,源

asp.net 把图片压缩成zip之后再进行下载

//这是导出的js方法 function fundaochu() { var data = "keyword=GetImageListdaochu&type=daochu&modality=" + $(eventRow).attr("study_date") + "&strWhere=a.REGISTRATION_ID=" + $(eventRow).attr("reg_id") + " an

Java ZIP压缩文件使用总结

做Java Web开发,有时候遇到将多个文件或者文件夹压缩成一个.zip文件,供前端下载.Java的JDK中提供一个java.util.zip的接口,供大家使用.如下图: 图上就是Java 的JDK提供的接口,但是压缩文件或者文件夹的时候,怎么使用上面的接口呢?下面我给出几个相关的接口,这些接口是下面压缩文件或者文件夹过程中使用到的. java.util.zip.ZipEntry; java.util.zip.ZipOutputStream; 下面的压缩过程主要是通过这两个接口压缩文件或者文件夹

linux下压缩成zip文件解压zip文件

linux  zip命令的基本用法是: zip [参数] [打包后的文件名] [打包的目录路径] linux  zip命令参数列表: -a     将文件转成ASCII模式 -F     尝试修复损坏的压缩文件     -h     显示帮助界面 -m     将文件压缩之后,删除源文件 -n 特定字符串    不压缩具有特定字尾字符串的文件 -o     将压缩文件内的所有文件的最新变动时间设为压缩时候的时间 -q     安静模式,在压缩的时候不显示指令的执行过程 -r     将指定的目录