深圳惠源办公设备租赁
联系电话 :13713619827

java 下载zip文件-流方式

1
发表时间:2021-11-09 21:19

文章目录

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。

提示:以下是本篇文章正文内容,下面案例可供参考

一、代码

@Data
@AllArgsConstructor
public class FileItem {

    private File file;

    private String fileName;

    private String businessType;

    private String suffix;

}
 

public static void downloadZip(List<FileItem> files, OutputStream outputStream) {
         ZipOutputStream zipOutStream = null;
         try {
             //-- 包装成ZIP格式输出流
             zipOutStream = new ZipOutputStream(new BufferedOutputStream(outputStream));
             // -- 设置压缩方法
             zipOutStream.setMethod(ZipOutputStream.DEFLATED);
             //-- 将多文件循环写入压缩包
             for (int i = 0; i < files.size(); i++) {
                 File file = files.get(i).getFile();
                 FileInputStream filenputStream = new FileInputStream(file);
                 byte[] data = new byte[(int) file.length()];
                 filenputStream.read(data);
                 //-- 添加ZipEntry,并ZipEntry中写入文件流,这里,需要防止下载的文件有重名的导致下载失败
                 zipOutStream.putNextEntry(new ZipEntry(files.get(i).getFileName()));
                 zipOutStream.write(data);
                 filenputStream.close();
                 zipOutStream.closeEntry();
             }
         } catch (IOException e) {
             e.printStackTrace();
             log.error(e.getMessage());
         }   finally {
             try {
                 if (Objects.nonNull(zipOutStream)) {
                     zipOutStream.flush();
                     zipOutStream.close();
                 }
                 if (Objects.nonNull(outputStream)) {
                     outputStream.flush();
                 }
             } catch (IOException e) {
                 e.printStackTrace();
                 log.error(e.getMessage());;
             }
         }
     }
 

二、下载失败-排查

下载后发现文件打不开,报格式错误

1.文件保存到本地

一开始以为是文件问题,后来发现文件保存到本地可以打开,排除

2.PostMan调试接口

以为是流关闭或着流处理有问题,postMan调用后发现下载的文件也可以打开,证明后端接口没有问题,是前端接受方式有错误,前端调整后既可下载成功。


分享到:
产品推荐 理光mpC6001/5504/4504数码复印机 理光mpC5503/4503数码复印机 理光mpC3503/3303
服务支持


厂家直接供货
24小时客户服务
办公方案支持
名字:
*
邮箱:
*
电话:
*
留言:
*
验证码
 换一张
*
提交留言
在线留言 :
会员登录
登录
其他帐号登录:
留言
回到顶部