通过Python脚本将文件上传到Google文档

时间:2011-07-13 13:07:00

标签: python upload google-api google-docs

我正在尝试使用Python脚本将备份文件从我的服务器上传到我的Google存储空间。备份文件是加密的zip文件(gpg文件)。它连接成功,但无法传输以下错误的文件:

Traceback (most recent call last):
  File "backup.py", line 37, in <module>
    entry = gd_client.Upload(ms, 'Backup.gpg', folder_or_uri=uri)
  File "/usr/local/lib/python2.6/dist-packages/gdata/docs/service.py", line 306, in Upload
    folder_or_uri)
  File "/usr/local/lib/python2.6/dist-packages/gdata/docs/service.py", line 161, in _UploadFile
    converter=gdata.docs.DocumentListEntryFromString)
  File "/usr/local/lib/python2.6/dist-packages/gdata/service.py", line 1236, in Post
    media_source=media_source, converter=converter)
  File "/usr/local/lib/python2.6/dist-packages/gdata/service.py", line 1358, in PostOrPut
    'reason': server_response.reason, 'body': result_body}
gdata.service.RequestError: {'status': 400, 'body': 'Invalid request URI', 'reason': 'Bad Request'}

这是我的代码:

import os
import sys
import gdata.docs
import gdata.docs.service
import gdata.docs.client

gd_client = gdata.docs.service.DocsService()
gd_client.ClientLogin('me@myemail.com', 'mypassword')

uri = '%s?convert=false' % gdata.docs.client.DOCLIST_FEED_URI

f = open('backup.zip.gpg')
ms = gdata.MediaSource(file_handle=f, content_type='application/octet-stream', content_length=os.path.getsize(f.name))
entry = gd_client.Upload(ms, 'Backup.gpg', folder_or_uri=uri)

该文件可能太大(56mb),我不能以这种方式使用Google Docs存储。如果是这种情况,我希望有更明确的错误消息。我想知道我的说法'convert = false'是否有问题。这是我正在使用的Google Apps帐户。

2 个答案:

答案 0 :(得分:2)

只有Google Apps for Business 帐户才能上传任何类型文件。普通帐户无法上传此文件类型。请参阅Google文档API中的this link

答案 1 :(得分:2)

好消息:现在,Google Apps for 免费帐户也可以上传任何类型的文件。

这里有三个关键点:

要在python中查看示例,请转到gdata-2.0.14并在目录samples / docs下找到resumable_upload_sample.py。