通过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帐户。
答
好消息:现在的谷歌应用服务免费帐户也可以上传任何类型文件。
三个关键位置点:
- 使用resumable upload
- 追加 “?转换=假” 的可恢复创建的媒体链接
- 上传数据块大小应该是multiple of 512 kilobyte
要在python中查看示例,请去下载gdata-2.0.14,并在samples/docs目录下找到resumable_upload_sample.py。
如果您认为问题的规模太大,为什么不尝试将您的zip文件分解为更小的5mb文件,然后尝试上传它们? –
不幸的是,这仍然产生了相同的错误 – Dan
这是一个Google Apps ** for Business **帐户吗? – serk