记录springBoot导出ZIP压缩包操作--下载文件流到本地

一,下载文件到本地

二,打包文件夹,压缩成ZIP文件,放入本地

三,文件流返回,并删除所有下载的本地文件

注意事项:

1,这是先把文件保存到本地,再进行压缩文件夹,最后删除本地文件夹的方式

2,保存的地址跟生成zip文件的地址不能一致,可以保存平级,比如:"D://download/图片/"这个地址存放下载的图片,"D://download/test.zip" 这个保存压缩的zip文件,删除时的地址是 zip完整路径("D://download/test.zip")和下载路径("D://download/图片/")。

3,如果不需要下载,就不用调用uploadURL()方法,如果地址有中文,必须先做转码。

4,注意文件地址 斜杠与反斜杠问题

网上也找了很多,最终选择了这种比较简单的方式,记录一下

后续找时间改成 文件流传输方式

 

1,下载图片(图片包含中文),图片保存在 localPath 目录下

调用保存图片方法:

Map<String, List<JSONObject>> imageList = productService.getProductMediasList(shopId, articleNos);
url = "D://download/图片";
// 下载文件到本地
ZipUtils zipUtils = new ZipUtils();
for (Map.Entry<String, List<JSONObject>> entry : imageList.entrySet()){
    String localPath = url + separator + entry.getKey();
    entry.getValue().stream().forEach(x -> {
        zipUtils.uploadURL(x.getString("path"), localPath, new File(x.getString("path")).getName());
    });
}

保存图片的实现方式:

/**
 * 下载资源到本地
 * @param fileUrl 文件地址
 * @param localPath 保存路径
 */
public void uploadURL(String fileUrl, String localPath, String fileName){
    // 中文链接转码
    fileUrl = FileUtils.cnToEncode(fileUrl);

    HttpURLConnection connection = null;
    DataInputStream in = null;
    try {
        URL url = new URL(fileUrl);/*将网络资源地址传给,即赋值给url*/
        /*此为联系获得网络资源的固定格式用法,以便后面的in变量获得url截取网络资源的输入流*/
        connection = (HttpURLConnection)url.openConnection();
        in = 
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值