Google云端硬盘在Python中正确设置mime类型

时间:2015-03-05 05:20:41

标签: python file-upload google-drive-api mime-types

我正在构建一个命令行Python脚本来将文件上传到Google云端硬盘。 我的目标是上传任何文件,无论文件类型如何。

根据文档,当我上传文件时(无论我是使用媒体上传还是简单上传),如果我将mime_type设置为无,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& #34;媒体类型'无'不受支持。有效的媒体类型:[* / *]"

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

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

任何人都可以帮我指点如何设置mime_type,以便无论文件类型如何,都可以正确上传?提前谢谢!

1 个答案:

答案 0 :(得分:1)

我相信,

binary/octet-stream实际上并不是一个有效的模仿类型。你确定你不是在寻找application/octet-stream吗?

This Python script for Google Drive uploading似乎也使用它。

相关问题