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

使用预签名URL实现S3对象分块下载的方案咨询

分块下载S3预签名URL对象方案

可以使用有效预签名URL分块下载S3对象,S3的字节范围获取功能完全兼容预签名URL,只要你的预签名URL是有效的GET类型URL,就能通过curl添加Range请求头实现断点续传或分块下载。

具体操作步骤

  1. 获取对象总大小
    先用curl发送HEAD请求(或带-I参数的GET请求)到预签名URL,从响应头中提取Content-Length字段,确认对象总字节数:

    curl -I "https://your-presigned-s3-url"
    

    响应中会包含类似Content-Length: 5368709120(代表5GB)的字段。

  2. 分块发起下载请求
    每次请求指定要下载的字节范围,格式为Range: bytes=起始字节-结束字节,比如每次下载100MB(104857600字节):

    • 下载第1块(0到104857599字节):
      curl -H "Range: bytes=0-104857599" "https://your-presigned-s3-url" -o part1.bin
      
    • 下载第2块(104857600到209715199字节):
      curl -H "Range: bytes=104857600-209715199" "https://your-presigned-s3-url" -o part2.bin
      

    以此类推,直到下载完所有分块。如果下载中断,只需重新发起对应分块的请求即可,无需从头开始。

  3. 合并分块文件
    所有分块下载完成后,将它们按顺序合并为完整文件:

    • Linux/macOS:
      cat part*.bin > full-object.ext
      
    • Windows(命令提示符):
      copy /b part1.bin+part2.bin+... full-object.ext
      

关键注意事项

  • 预签名URL必须是GET请求类型(这是S3预签名URL的默认生成方式),因为Range请求需要通过GET或HEAD方法发起,预签名URL会与请求方法绑定,确保生成时没有指定其他方法。
  • 如果生成预签名URL时限制了特定请求头(比如固定了Range值),则只能使用指定的范围;默认生成的预签名URL不会限制Range头,支持任意字节范围请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:40:03