Google 在 Python 中正确设置 MIME 类型

Google Drive Setting mime types properly in Python

我正在构建命令行 Python 脚本以将文件上传到 Google 驱动器。 我的目标是上传任何文件,无论文件类型如何。

根据文档,当我上传文件时(无论我使用的是媒体上传还是简单上传)如果我将 mime_type 设置为 None,Google 驱动器应该相应地自动设置 mime 类型。它适用于大多数文件类型。这是我如何上传文件的简化示例:

def upload(service, title, parent_id, mime_type, filename):
    media_body = MediaFileUpload(filename, mimetype=mime_type, resumable=True)
    body={
        'title': title,
        'mimeType': None
    }
    body['parents'] = [{'id': parentID}]

    try:
        service.files().insert(body=body,media_body=media_body).execute()
    except apiclient.errors.HttpError, e:
        #catch the error 

问题是当文件是可执行文件、数据库或其他应用程序支持文件时,Google 驱动器似乎无法正确处理 mime_type 设置并抛出错误: "HttpError 400 "不支持媒体类型 'None'。有效媒体类型:[ * / *]"

我发现了 400 错误,然后我尝试使用 mime_type "binary/octet-stream" 上传文件,这似乎至少让请求通过了。但是当上传文件时,它的大小为 0 字节,即文件已创建,但上传了 none 的内容。

我也试过根据Python的内置"mimetypes.guess_type(url)"函数设置mime_type,但即使有这种特殊性,它似乎也不能正常工作.

谁能帮我指出如何设置 mime_type 以便无论文件类型如何,都能正确上传?提前致谢!

binary/octet-stream 实际上不是有效的 mimetype,我相信。您确定要查找的不是 application/octet-stream 吗?

This Python script for Google Drive uploading好像也在用