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

问题描述:

我试图从我的服务器上将备份文件上传到我的Google存储中的Python脚本中。备份文件是一个加密的zip文件(gpg文件)。连接成功,但无法传输文件,以下错误:通过Python脚本将文件上传到Google文档

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('[email protected]', '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文档存储。如果是这种情况,我希望能得到更明确的错误信息。我想知道,如果我说'convert = false'是一个问题。这是我正在使用的Google Apps帐户。

+1

如果您认为问题的规模太大,为什么不尝试将您的zip文件分解为更小的5mb文件,然后尝试上传它们? –

+0

不幸的是,这仍然产生了相同的错误 – Dan

+1

这是一个Google Apps ** for Business **帐户吗? – serk

上传的文件任何类型只允许Google Apps 用于商户帐户。常规帐户无法上传此文件类型。请参阅Google Docs API中的this link

好消息:现在的谷歌应用服务免费帐户也可以上传任何类型文件。

三个关键位置点:

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