繁体   English   中英

Google Drive在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字节,即创建了文件,但没有内容上传。

我还尝试根据Python内置的“ mimetypes.guess_type(url)”函数设置mime_type,但是即使具有这种特殊性,它似乎也无法正常工作。

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

我认为, binary/octet-stream实际上不是有效的模仿类型。 您确定不要找application/octet-stream吗?

这个用于Google云端硬盘上传的Python脚本似乎也使用了它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM