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

通过Google Apps Script上传文件至Amazon S3后文件损坏如何解决

问题原因与解决方案

核心原因

  • 你使用的S3 for Google Apps Script库默认会对传入的Blob内容执行UTF-8字符串编码,而PDF属于二进制格式文件,编码过程会修改原始字节流,最终导致文件损坏无法打开。
  • 上传时未显式指定正确的Content-Type请求头,S3返回文件时响应头错误也会导致浏览器无法正确识别PDF格式。

解决步骤

  1. 先验证Google Docs导出的PDF本身正常,执行下方测试代码将导出的Blob存入Google Drive,确认文件可以正常打开:
var blob = DocumentApp.getActiveDocument().getAs('application/pdf');
// 测试导出逻辑是否正常
DriveApp.createFile(blob);

如果导出的文件可正常打开,即可确认问题出在S3上传环节。

  1. 修改S3上传代码,改为传递Blob字节数组避免自动编码,同时显式指定MIME类型:
var blob = DocumentApp.getActiveDocument().getAs('application/pdf');
var s3 = new S3('XXXXX', 'XXXX');
s3.putObject(
  "bucket", 
  blob.getName(), 
  blob.getBytes(), // 直接传递二进制字节数组,跳过库的字符串编码逻辑
  {
    logRequests:true,
    'Content-Type': 'application/pdf' // 显式指定文件格式
  }
);
  1. 若修改后仍存在问题,可对比本地导出的PDF和S3中文件的大小:如果大小不一致,检查库的初始化配置是否有误;如果大小一致,检查S3桶的策略配置,确认文件上传后没有被生命周期规则、跨域配置等篡改内容。

内容的提问来源于stack exchange,提问作者Krishna Kanth Vuppalapati

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:57:02