2015-11-02 188 views
0

我正在寫一個上傳腳本,使用斷點續傳上傳CSV文件到谷歌雲端硬盤文件夾時出錯下面。谷歌雲端硬盤API 400上傳大文件

它似乎工作文件的大小爲< = 20MB的文件,但更大的文件導致問題。

我有我正努力用5 MIB的塊大小上傳,但我在最後一個塊上傳得到一個400錯誤一個43 MB CSV文件:

file_meta = {'title': 'test.csv', 'description': 'Test CSV', 'mimeType': 'text/csv', 'parents': [{'id': myfolder_key}]} 
convert_to_Google_Sheets = True 
chunk_size = 1024*1024*5 
content = <MediaIoBaseUpload object, resumable, 5 MiB chunk size> 
req = drive.files().insert(body=file_meta, media_body=content, convert=convert_to_Google_Sheets) 
response is None 
while not response: 
    status, response = req.next_chunk() 
    if status: 
    print "Uploaded %d%%." % int(status.progress() * 100) 

上傳似乎進展罰款,直到我們得到的最後一個塊,當它與一個400錯誤而終止:

Uploaded 11%. 
Uploaded 23%. 
Uploaded 34%. 
Uploaded 46%. 
Uploaded 57%. 
Uploaded 69%. 
Uploaded 81%. 
Uploaded 92%. 
Traceback (most recent call last): 
    File "<console>", line 2, in <module> 
    File "/usr/local/lib/python2.6/dist-packages/oauth2client/util.py", line 137, in positional_wrapper 
    return wrapped(*args, **kwargs) 
    File "/usr/local/lib/python2.6/dist-packages/googleapiclient/http.py", line 880, in next_chunk 
    return self._process_response(resp, content) 
    File "/usr/local/lib/python2.6/dist-packages/googleapiclient/http.py", line 907, in _process_response 
    raise HttpError(resp, content, uri=self.uri) 
HttpError: <HttpError 400 when requesting https://www.googleapis.com/upload/drive/v2/files?uploadType=resumable&convert=true&alt=json returned "Bad Request"> 
+0

您可能想嘗試使用分段上傳。正如驅動器文檔中所述 - https://developers.google.com/drive/web/manage-uploads#multipart。 – Andres

回答

1

我碰到了同樣的問題,並堅持思考的問題是文件大小,但事實證明文件的大小是隻是問題的人爲因素。

問題是,每個電子表格[1]有200萬個單元格的限制,當我的(也可能是你的)CSV文件大約有20MB時,列*行的數量突破了200萬個單元格的限制。

[1] https://support.google.com/drive/answer/37603?hl=en

相關問題