You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Cloudinary API下载图片?已列资源并创建Zip,求后续步骤

通过Cloudinary API下载图片及打包Zip的正确流程

你的代码问题点

你当前的代码会循环每个资源单独创建Zip包,这不符合批量打包下载的需求,反而会生成多个仅包含单张图片的Zip,完全没必要。正确的做法是先收集所有需要打包的资源ID,再一次性生成包含全部资源的Zip。

修正后的完整流程及代码

  1. 过滤获取目标资源列表(避免拉取全部资源)
  2. 收集所有资源的public_id
  3. 一次性创建包含所有目标资源的Zip包
  4. 从返回结果中获取Zip下载地址并完成下载
cloudinary.v2.api.resources({ tags: 'PDF' }) // 直接过滤带PDF标签的资源,减少数据量
  .then(res => {
    // 收集所有符合条件的资源public_id
    const publicIds = res.resources.map(el => el.public_id);
    
    // 一次性创建包含所有目标资源的Zip包
    return cloudinary.v2.uploader.create_zip({
      public_ids: publicIds,
      // 可选:可以添加transform参数对图片进行压缩/格式转换后再打包
      // transform: { width: 800, crop: "scale" }
    });
  })
  .then(zipResult => {
    console.log('Zip包生成成功,下载地址:', zipResult.secure_url);
    
    // 前端环境下触发下载的示例逻辑
    return fetch(zipResult.secure_url);
  })
  .then(response => response.blob())
  .then(blob => {
    const downloadUrl = window.URL.createObjectURL(blob);
    const link = document.createElement('a');
    link.href = downloadUrl;
    link.download = 'cloudinary-pdf-resources.zip'; // 自定义下载文件名
    document.body.appendChild(link);
    link.click();
    // 清理临时链接
    window.URL.revokeObjectURL(downloadUrl);
    document.body.removeChild(link);
  })
  .catch(err => console.error('处理出错:', err));

关键注意事项

  • 批量打包:create_zip接口支持传入数组格式的public_ids,一次性打包所有目标资源,这是最高效的方式。
  • 资源过滤:调用resources()时通过tags、type、prefix等参数过滤资源,避免获取无关数据。
  • 下载逻辑:如果是后端环境,可使用axios、request等工具请求Zip地址并保存到服务器;前端则通过创建临时下载链接触发浏览器下载。
  • 错误处理:必须添加catch捕获API调用失败、资源不存在等异常情况。

内容的提问来源于stack exchange,提问作者newexe91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 02:05:02