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
吗?
我正在构建命令行 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
吗?