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

使用boto3上传zip到AWS S3后文件损坏无法解压的问题求助

问题根因

你上传代码中错误配置了ContentEncoding: "base64"参数,这是导致下载文件损坏、无法解压的直接原因。

ContentEncoding字段的作用是告知S3当前上传的内容使用了指定编码做过转换,S3存储时会自动按对应编码反向解码后存储原始内容。你上传的是原生二进制ZIP文件,没有经过Base64编码处理,S3强行执行Base64解码操作后会破坏原文件的二进制结构,最终导致下载后的文件无法正常解压。

直接修复方案

删除ExtraArgs中的"ContentEncoding": "base64"配置项即可,修改后的核心代码参考:

file = request.files["my_zip_file"] # file obj (multipart / form-data)
s3.upload_fileobj(
                        file,
                        BUCKET_NAME,
                        folder_name,
                        ExtraArgs={
                           "ContentType": file.content_type
                        }
                    )

通用排查步骤

  • 对比本地原始文件和S3下载文件的MD5/SHA256哈希值,不一致即可直接判定上传/存储环节文件被篡改
  • 排查上传时的所有自定义Header配置,确认ContentEncoding、ContentDisposition等会影响S3文件处理逻辑的参数,和实际上传的文件属性匹配
  • 先将待上传的文件对象存储到本地做一次解压测试,排除原始上传文件本身损坏的可能性
  • 直接通过S3控制台上传同一个ZIP文件,下载后测试解压是否正常,如果正常即可锁定问题出在代码上传环节的配置上

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 16:36:03