2011-07-13 85 views
5

我試圖從我的服務器上將備份文件上傳到我的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

回答

2

上傳的文件任何類型只允許Google Apps 用於商戶帳戶。常規帳戶無法上傳此文件類型。請參閱Google Docs API中的this link

2

好消息:現在的谷歌應用服務免費帳戶也可以上傳任何類型文件。

三個關鍵位置點:

要在python中查看示例,請去下載gdata-2.0.14,並在samples/docs目錄下找到resumable_upload_sample.py。

相關問題