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

使用AWS Lambda和API Gateway下载ZIP文件遇格式问题求助

问题诊断与解决方法

核心问题:Base64编码引入多余换行符

你的代码中使用Base64.encode64处理ZIP文件内容,这个方法会每76个字符自动插入换行符。但API Gateway要求Base64编码的响应体必须是无换行的连续字符串,这些换行符会导致解码后的ZIP文件结构损坏,最终无法正常打开。

修复步骤

1. 替换Base64编码方法

将Base64.encode64替换为Base64.strict_encode64,该方法不会添加任何换行符,生成的编码字符串完全符合API Gateway的要求:

'body': Base64.strict_encode64(zip_file),

(无需额外的force_encoding('UTF-8'),strict_encode64本身返回的就是UTF-8编码的字符串)

2. 确认API Gateway二进制媒体类型配置

必须在API Gateway中把application/zip添加到二进制媒体类型列表,否则网关可能会对响应进行额外处理,导致文件损坏:

  • 进入API Gateway控制台,选中你的目标API
  • 切换到「设置」页面,找到「二进制媒体类型」选项
  • 添加application/zip并保存配置
  • 重新部署API,确保配置生效

额外验证点

  • 检查reports.download_and_compress_files生成的ZIP文件本身是否完好:可在Lambda日志中输出文件大小,或本地测试该方法生成的ZIP能否正常打开,排除文件生成环节的问题。
  • 确保响应头Content-Type严格设置为application/zip,避免拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:10:09