2015-11-02 189 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

相关问题