Google Drive API V3 export_media缺少Content-Length和Content-Range

时间:2017-03-17 15:23:24

标签: python google-drive-api

我正在使用Google Driver API python库以CSV格式下载文件。

google_drive_service = get_service()
mimeType = 'text/csv'
request = google_drive_service.files().export_media(fileId='abc', mimeType=mimeType)
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while not done:
    status, done = downloader.next_chunk()
    print "Download %d%%." % int(status.progress() * 100)
fh.seek(0)
content = fh.getvalue()

由于它是一个很大的标签,因此下载过程会被块分解。它保持打印输出"下载0%"。当代码检查下载过程时,我循环访问库代码。它显示"下载0%"所有的时间都是因为http响应没有"内容范围"和"内容长度"标题,导致进程检查问题。

如果您有兴趣复制此过程。创建电子表格并填写列的单元格值:A:E'和行' 1:10000'。让我知道是否有人有同样的问题或有关于为什么会发生这种情况的线索。以下是Gdrive代码:https://github.com/google/google-api-python-client/blob/master/googleapiclient/http.py#L664-L691

1 个答案:

答案 0 :(得分:0)

如果http请求要求,http响应将只有内容范围标头。根据{{​​3}},导出不支持部分下载,仅适用于下载。

你可以尝试一些事情: -  1.在v2 API中,文件资源具有静态exportLinks数组。您可以尝试在适当的链接上进行部分下载。您需要使用相同的凭据进行自己的REST获取,而不是python库。  你可以看看使用"发布" Google Spreadsheets的功能是创建CSV的可下载链接。