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

修改GitHub Python脚本以支持更多MIME类型的技术求助

扩展S3到Google Drive脚本支持多文件类型解决方案

针对你修改脚本MIME类型后报错的问题,核心原因是原脚本仅为电子表格设计,存在专属逻辑限制,以下是具体修复步骤:

1. 移除电子表格专属处理逻辑

原脚本大概率包含仅适用于电子表格的代码,需要排查并调整:

  • 查找是否有调用Google Sheets API的代码(比如spreadsheets.create、spreadsheets.values相关接口),这类接口只支持电子表格,普通文件需替换为Google Drive的files.create接口。
  • 删除或注释掉文件内容解析、格式转换的代码(比如将S3文件转为电子表格格式的逻辑),jpg、mp3这类二进制文件无需处理,直接上传原始字节流即可。

2. 修正MIME类型配置

不要仅修改最后一行的固定MIME值,改为动态适配多类型:

  • 优先从S3文件的Content-Type头部获取原生MIME类型,比如S3上的jpg文件会自带image/jpeg类型,直接复用即可。
  • 如果需要将部分格式转换为Google Drive专属类型(比如Excel转Google表格),可以做映射处理,示例代码如下:
    # 替换原固定MIME类型的代码
    mime_mapping = {
        # 保留电子表格的转换映射
        'application/vnd.ms-excel': 'application/vnd.google-apps.spreadsheet',
        # 新增其他文件类型的原生MIME
        'image/jpeg': 'image/jpeg',
        'image/jpg': 'image/jpeg',
        'audio/mpeg': 'audio/mpeg'
    }
    # 从S3对象获取原始Content-Type,找不到则用默认值
    raw_mime = s3_object.get('ContentType', 'application/octet-stream')
    mime_type = mime_mapping.get(raw_mime, raw_mime)
    

3. 调整上传逻辑适配二进制文件

原脚本可能针对电子表格做了文本编码处理,需修改为二进制上传:

  • 确保从S3读取文件时用二进制模式(比如rb),不要做UTF-8编码转换。
  • 调用Drive API时,使用media_body参数传入二进制流,并且关闭不必要的convert参数(普通文件设置convert=False,避免强制转换导致报错)。

4. 排查报错细节

如果仍报错,先提取具体错误信息:

  • 比如API返回400 Bad Request可能是MIME类型不匹配或参数错误;403是权限不足,需确认Google Drive API权限包含drive.file或更广泛的上传权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:27:22