簡體   English   中英

上傳大文件時出現 Google Drive API 400 錯誤

[英]Google Drive API 400 error when uploading large file

我正在編寫一個上傳腳本,使用可恢復上傳將 CSV 文件上傳到 Google Drive 文件夾 - 正在使用它作為參考

https://developers.google.com/api-client-library/python/guide/media_upload

請參閱下面的代碼。

它似乎適用於大小 <= 20MB 的文件,但更大的文件會導致問題。

我有一個 43 MB 的 CSV 文件,我試圖使用 5 MiB 的塊大小上傳它,但在最后一個塊上傳時出現 400 錯誤:

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">

我遇到了同樣的問題,並一直認為問題出在文件大小上,但結果證明文件大小只是問題的產物。

問題是每個電子表格 [1] 有 200 萬個單元格的限制,當我的(也可能是你的)CSV 文件達到 20MB 左右時,列數 * 行數超過了 200 萬個單元格的限制。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM