精华内容
下载资源
问答
  • //将磁盘的多个文件打包成压缩包输出流下载@GetMapping(value = "/download1")public void download1(HttpServletRequest request, HttpServletResponse response) throwsException {String outputFileName= "文件...

    //将磁盘的多个文件打包成压缩包并输出流下载

    @GetMapping(value = "/download1")public void download1(HttpServletRequest request, HttpServletResponse response) throwsException {

    String outputFileName= "文件" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".zip";//设置response参数

    response.reset();

    response.setContentType("content-type:octet-stream;charset=UTF-8");

    response.setHeader("Content-Disposition", "attachment;filename=" + new String((outputFileName).getBytes(), "iso-8859-1"));

    ServletOutputStream out=response.getOutputStream();

    ZipArchiveOutputStream zous= newZipArchiveOutputStream(out);

    zous.setUseZip64(Zip64Mode.AsNeeded);

    File f1= new File("D:\\testfile\\aaa.png");

    File f2= new File("D:\\testfile\\bbb.png");

    List fileList = new ArrayList<>();

    fileList.add(f1);

    fileList.add(f2);for(File file : fileList) {

    String fileName=file.getName();

    InputStream inputStream= newFileInputStream(file);

    ByteArrayOutputStream baos= newByteArrayOutputStream();byte[] buffer = new byte[1024];intlen;while ((len = inputStream.read(buffer)) != -1) {

    baos.write(buffer,0, len);

    }if (baos != null) {

    baos.flush();

    }byte[] bytes =baos.toByteArray();//设置文件名

    ArchiveEntry entry = newZipArchiveEntry(fileName);

    zous.putArchiveEntry(entry);

    zous.write(bytes);

    zous.closeArchiveEntry();if (baos != null) {

    baos.close();

    }

    }if(zous!=null) {

    zous.close();

    }

    }//将网络url资源文件的多个文件打包成压缩包并输出流下载

    @GetMapping(value = "/download2")public void download2(HttpServletRequest request, HttpServletResponse response) throwsException {

    String outputFileName= "文件" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".zip";//设置response参数

    response.reset();

    response.setContentType("content-type:octet-stream;charset=UTF-8");

    response.setHeader("Content-Disposition", "attachment;filename=" + new String((outputFileName).getBytes(), "iso-8859-1"));

    ServletOutputStream out=response.getOutputStream();

    ZipArchiveOutputStream zous= newZipArchiveOutputStream(out);

    zous.setUseZip64(Zip64Mode.AsNeeded);

    String path1= "http://www.baidu.com/img/bd_logo1.png";

    String path2= "http://www.baidu.com/img/bd_logo1.png";

    List pathList = new ArrayList<>();

    pathList.add(path1);

    pathList.add(path2);for(String path : pathList) {

    String fileName= UUID.randomUUID() + ".png";

    InputStream inputStream=getInputStreamFromUrl(path);

    ByteArrayOutputStream baos= newByteArrayOutputStream();byte[] buffer = new byte[1024];intlen;while ((len = inputStream.read(buffer)) != -1) {

    baos.write(buffer,0, len);

    }if (baos != null) {

    baos.flush();

    }byte[] bytes =baos.toByteArray();//设置文件名

    ArchiveEntry entry = newZipArchiveEntry(fileName);

    zous.putArchiveEntry(entry);

    zous.write(bytes);

    zous.closeArchiveEntry();if (baos != null) {

    baos.close();

    }

    }if(zous!=null) {

    zous.close();

    }

    }/*** 经过网络地址获取文件InputStream

    *

    *@parampath 地址

    *@return

    */

    public staticInputStream getInputStreamFromUrl(String path) {

    URL url= null;

    InputStream is= null;try{

    url= newURL(path);

    }catch(MalformedURLException e) {

    e.printStackTrace();

    }try{

    HttpURLConnection conn=(HttpURLConnection) url.openConnection();

    conn.setDoInput(true);

    conn.connect();

    is=conn.getInputStream();

    }catch(IOException e) {

    e.printStackTrace();

    }returnis;

    }

    展开全文
  • 先不多说,直接贴代码吧,在服务器的E盘下放一个E:/manual.rar的压缩包 package com.cellstrain.icell.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind....

    先不多说,直接贴代码吧,在服务器的E盘下放一个E:/manual.rar的压缩包

    package com.cellstrain.icell.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.*;
    import java.net.URLEncoder;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    @Controller
    public class ManualController {
        /**
         * 产品手册批量下载(以压缩包的格式)
         *
         * @param request
         * @param response
         * @return
         * @throws Exception
         */
        @RequestMapping("downloadManual")
        public HttpServletResponse downLoadFiles(HttpServletRequest request, HttpServletResponse response) throws Exception {
            try {
                File dir = new File("E:\\manual\\");
                /**创建一个临时压缩文件,我们会把文件流全部注入到这个文件中,这里的文件你可以自定义是.rar还是.zip**/
                File file = new File("E:/manual.rar");
                if (!file.exists()) {
                    file.createNewFile();
                }
                response.reset();
                return downloadZip(file, response);
            } catch (Exception e) {
                e.printStackTrace();
            }
            /**直到文件的打包已经成功了,文件的打包过程被我封装在FileUtil.zipFile这个静态方法中,稍后会呈现出来,接下来的就是往客户端写数据了**/
            return response;
        }
    
        /**
         * 以流的形式下载文件
         *
         * @param file
         * @param response
         * @return
         */
        public static HttpServletResponse downloadZip(File file, HttpServletResponse response) {
            try {
                // 以流的形式下载文件。
                InputStream fis = new BufferedInputStream(new FileInputStream(file.getPath()));
                byte[] buffer = new byte[fis.available()];
                fis.read(buffer);
                fis.close();
                // 清空response
                response.reset();
                OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
                response.setContentType("application/octet-stream");
                //如果输出的是中文名的文件,在此处就要用URLEncoder.encode方法进行处理
                response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getName(), "UTF-8"));
                toClient.write(buffer);
                toClient.flush();
                toClient.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            } finally {
                try {
                    File f = new File(file.getPath());
    //                f.delete();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return response;
        }
    
        /**
         * 根据输入的文件与输出流对文件进行打包
         *
         * @param inputFile
         * @param ouputStream
         */
        public static void zipFile(File inputFile, ZipOutputStream ouputStream) {
            try {
                if (inputFile.exists()) {
                    /**如果是目录的话这里是不采取操作的,至于目录的打包正在研究中**/
                    if (inputFile.isFile()) {
                        FileInputStream IN = new FileInputStream(inputFile);
                        BufferedInputStream bins = new BufferedInputStream(IN, 1024);
                        //org.apache.tools.zip.ZipEntry
                        ZipEntry entry = new ZipEntry(inputFile.getName());
                        ouputStream.putNextEntry(entry);
                        // 向压缩文件中输出数据
                        int nNumber;
                        byte[] buffer = new byte[1024];
                        while ((nNumber = bins.read(buffer)) != -1) {
                            ouputStream.write(buffer, 0, nNumber);
                        }
                        // 关闭创建的流对象
                        bins.close();
                        IN.close();
                    } else {
                        try {
                            File[] files = inputFile.listFiles();
                            for (int i = 0; i < files.length; i++) {
                                zipFile(files[i], ouputStream);
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    效果图如下:
    

     

    可以自己手动选择文件的存放位置,pdf、word、excel等类似
    

    原文博客的链接地址:https://www.cnblogs.com/qianzf/p/6780856.html

    展开全文
  • log.info("输出路径:"+targetPath); log.info("生产PPT的版本为:"+accountingYear+"-"+accountingPeriod); pptService.processNewPPT(targetPath, accountingYear,accountingPeriod); file1 = new File(targetPath...
    public void batchPropertyDownloadPptTemp(String accountingYear, String accountingPeriod, HttpServletResponse response) {
    
            String targetPath = getPPTOutputName();
            String excelTargetPath = getExcelOutputName();
            File file1 = null;
            File file2 = null;
            try{
                OutputStream outputStream = response.getOutputStream();
                ZipArchiveOutputStream zous = new ZipArchiveOutputStream(outputStream);
    
                zous.setUseZip64(Zip64Mode.AsNeeded);
                log.info("输出路径:"+targetPath);
                log.info("生产PPT的版本为:"+accountingYear+"-"+accountingPeriod);
                pptService.processNewPPT(targetPath, accountingYear,accountingPeriod);
                file1 = new File(targetPath);
                InputStream inputStream1 = new FileInputStream(file1);
                byte[] bytes = null;
                ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
                ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];
                int size;
                while ((size = inputStream1.read(buffer)) != -1) {
                    baos1.write(buffer, 0, size);
                }
                bytes = baos1.toByteArray();
                ArchiveEntry entry1 = new ZipArchiveEntry(accountingYear + "年" + accountingPeriod+ "月_" + getToday() + ".pptx");
                zous.putArchiveEntry(entry1);
                zous.write(bytes);
                zous.closeArchiveEntry();
    
                pptExcelDataService.getPptExcel(excelTargetPath, accountingYear,accountingPeriod);
                file2 = new File(excelTargetPath);
                InputStream inputStream2 = new FileInputStream(file2);
                while ((size = inputStream2.read(buffer)) != -1) {
                    baos2.write(buffer, 0, size);
                }
                bytes = baos2.toByteArray();
                ArchiveEntry entry2 = new ZipArchiveEntry(accountingYear + "年" + accountingPeriod+ "月_" + getToday() + ".xlsx");
                zous.putArchiveEntry(entry2);
                zous.write(bytes);
                zous.closeArchiveEntry();
    
                inputStream1.close();
                inputStream2.close();
                outputStream.flush();
                outputStream.close();
                baos1.close();
                baos2.close();
                zous.close();
            } catch (Exception e) {
                log.error("导出报表PPT异常:{[]}", e);
                throw new BusinessException("导出报表PPT异常");
            }finally {
                if (file1 != null) {
                    if (file1.exists()) {
                        file1.delete();
                    }
                }
                if (file2 != null) {
                    if (file2.exists()) {
                        file2.delete();
                    }
                }
            }
        }
    
    
    展开全文
  • java导出文件放到压缩包

    万次阅读 2021-09-23 17:43:04
    * 生成.zip文件(当前方法限定 zip文件输出路径必须与压缩文件在同一路径下) * * @param path zip输出路径前缀 * @param compressFileNames 压缩文件名称 * @throws IOException 异常信息 */ public static ...
    /**
         * 生成.zip文件(当前方法限定 zip文件输出路径必须与压缩文件在同一路径下)
         *
         * @param path              zip输出路径前缀
         * @param compressFileNames 压缩文件名称
         * @throws IOException 异常信息
         */
        public static String file3Zip(String path, String... compressFileNames) throws IOException {
            ZipOutputStream zipOutputStream;
            //创建压缩包文件对象 压缩包名称
            File file = new File(path + FILE_NAME_ZIP);
            //创建压缩包流并创建对应压缩包
            zipOutputStream = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
            //获取当前文件路径下所有文件数组
            File[] files = new File(path).listFiles();
            FileInputStream fileInputStream;
            byte[] buf = new byte[1024];
            String fileName;
            int len;
            List<String> fileNameList = Arrays.asList(compressFileNames);
            if (files != null && files.length > 0) {
                //遍历当前文件列表 当前文件名称包含传入的文件名称时 将当前文件进行压缩
                for (File excelFile : files) {
                    fileName = excelFile.getName();
                    //判断是否包含当前文件
                    if (fileNameList.contains(fileName)) {
                        //获取当前文件输入流
                        fileInputStream = new FileInputStream(excelFile);
                        //放入压缩zip包中
                        zipOutputStream.putNextEntry(new ZipEntry(fileName));
                        //读取文件
                        while ((len = fileInputStream.read(buf)) > 0) {
                            zipOutputStream.write(buf, 0, len);
                        }
                        //关闭当前压缩包流
                        zipOutputStream.closeEntry();
                        //关闭输入流
                        fileInputStream.close();
                    }
                }
            }
            //关闭输出流
            zipOutputStream.close();
            return file.getName();
        }
    
    展开全文
  • 取出数据库表中的内容写入文件,并将所有文件写入到压缩包最终导出指定的某目录下//导出的压缩包格式 xxxx_dateDate currentTime = new Date();//格式化日期格式将yyyy-MM-dd HH:mm:ss 格式转换成xxxxxxxxx格式...
  • Java如何实现导出ZIP压缩包?本篇文章小编给大家分享一下Java实现导出ZIP压缩包代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。代码如下:import org....
  • 主要介绍了java压缩多个文件并且返回示例,返回压缩主是为了在程序里再做其它操作,需要的朋友可以参考下
  • importjava.util.zip.*;importjava.io.*;publicclassMyZip{privatevoidzip(StringzipFileName,FileinputFile)throwsIOException{ZipOutputStreamout=newZipOutputStre...package com.zjw;import java...
  • image前言如何用Java对文件进行加压和压缩上篇文章说了项目中对...一、正文这里没有使用其他的jar包,利用Java中的IO直接对文件进行操作,为了方便将文件放入桌面,路径为:C:\Users\Surpass\Desktop。二、使用...
  • 数据输入/输出流(DataInputStream类与DataOutputStream类)允许应用程序以与机器无关的方式从底层输入流中读取基本Java数据类型。 常用的构造方法如下: (1)DataInputStream(InputStream in):使用指定的基础...
  • 需求:前台传过来一个url数组,其中是每个文件的路径,后台需要获取每个文件然后将其打成压缩包返回给前台下载 核心是:ZipOutputStream,废话不多说,上代码 savePath 是我在yml配置文件里配置好的文件存储...
  • Java 导出Zip压缩包前言导出文件 前言 导出 Zip 压缩包也是工作中经常遇到的一个问题,这里简单记录一下。 本博客主要是记录如何调用接口获取多个远程文件,并压缩导出 导出文件 可以导出任意类型的文件,但是...
  • 【File操作】Java实现导出ZIP压缩包

    千次阅读 多人点赞 2020-11-01 21:27:43
    最近接触一个需求要求压缩导出文件,于是乎便要致力于研究一下工具类啦,故也诞生了此篇文章。 下面代码中,溪源也将import导入的依赖也贴出来了,避免大家引入错误。 import org.apache.commons.io.FileUtils; ...
  • 本文实例为大家分享了Java多文件以ZIP压缩包导出的具体代码,供大家参考,具体内容如下1、使用java实现吧服务器的图片打包成一个zip格式的压缩包导出,多个文件打包导出。2、代码如下:**ImageByteUtil.java**public...
  • java实现excel打压缩包下载

    千次阅读 2018-10-31 10:04:12
    2.拿response的输出流,初始化ZipOutputStream  初始化ZipOutputStream的时候需要传入一个OutputStream,此时我们将response的OutputStream作为实参传给ZipOutputStream(这个OutputStream能够写HTTP响应的实体...
  • 先将文件通过放入压缩包 //先new一个文件文件名字随意 File zipFile = new File("D:/"+str+".zip"); byte[] buf = new byte[1024]; int len; //在服务器端生成压缩文件包,然后通过压缩将...
  • 最近接触一个需求要求压缩导出文件,于是乎便要致力于研究一下工具类啦,故也诞生了此篇文章。下面代码中,溪源也将import导入的依赖也贴出来了,避免大家引入错误。import org.apache.commons.io.FileUtils;...
  • 某天产品baba,提了一个需求,企业下载文件压缩包,需要按类别归类全部的文件。压缩包结构如下图: 某某企业文件.zip 文件夹1 a.jpg b.jpg 文件夹2 a....
  • java文件打包压缩输出到浏览器下载

    千次阅读 2020-06-24 09:46:52
    java批量下载文件打包压缩工具类,输出到浏览器下载,可以自己改名。 工具类: 入参 :文件LIst ;打包后的名字 ;响应浏览器 /** * 功能:压缩多个文件,输出压缩后的zip文件 * * @param srcfile:源文件...
  • 以文件输出流实现方式多文件打成zip包 service实现层 //多附件下载并压缩打包 public Map<String,Object> downFiles(String businessId,HttpServletResponse response){ Map<String,Object> ...
  • //获取ZIP输入(一定要指定字符集Charset.forName("GBK")否则会报java.lang.IllegalArgumentException: MALFORMED) ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(input), ...
  • 流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种。I/O(Input/Output,输入/输出)流提供了一条通道程序,可以使用这条通道把源中的字节序列送目的地。虽然 I/O 流通常与磁盘文件存取有关,...
  • 通过IO把文件传前端并下载
  • import java.io.*; import java.util.zip.*; public class Fifteen5 { private void zip(String zipFileName,File inputFile) throws Exception{ ZipOutputStream out=new ZipOutputStream(new FileOutputStream...
  • JAVA将多个文件打包成ZIP压缩包输出

    千次阅读 2019-07-01 11:36:21
    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStrea...
  • // 获取文件输出IO BufferedOutputStream bouts = new BufferedOutputStream(outs); response.addHeader("content-disposition", "attachment;filename=" + java.net.URLEncoder.encode(str, "UTF-8")); int ...
  • Java中的I/O(输入输出流

    千次阅读 2018-01-03 00:17:59
    在变量、数组和对象中存储的数据是暂时存在的,程序结束后他们就会丢失。为了能够永久地保存程序创建的数据,...Java的I/O技术可以将数据保存文本文件、二进制文件甚至是ZIP压缩文件中,以达到永久性保存数据的要求。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,978
精华内容 4,391
关键字:

java输出流到压缩包

java 订阅