Google Drive API导出application/zip返回空内容,PDF导出正常求助
分析你的Google Drive API导出问题
首先可以明确的是,你的代码操作大概率没有问题,结合你描述的现象,更倾向于是Google Drive API本身的bug,具体分析如下:
先排除代码层面的小细节(可能是粘贴笔误)
- 你代码里的
$service = new Google_Service_Drive($client)语句末尾缺少分号,不过这应该是你粘贴时的疏漏——如果真的没写,代码根本无法运行,所以可以忽略这点。 - 确认
export方法里的$fileId变量是否正确赋值为目标表格的ID(也就是你get方法里用的1GDeQU7mVbipmQlPTTccmznUeJ0AgFyNrGA4TfzTgEys),不过你提到返回了200状态码,说明这个参数是正确的,所以也不是问题所在。
核心问题判断:API服务端bug
你提到的两个关键现象已经足以佐证:
- 导出PDF格式完全正常,说明你的客户端配置、权限、文件ID都是没问题的,排除了所有基础错误可能。
- Google官方的API Explorer也无法正常导出ZIP格式,这直接说明问题出在Google Drive API的服务端,而非你的代码实现。
临时解决方案
既然已经在谷歌问题追踪提交了Issue,目前可以用一个临时方案绕开这个bug:
- 先将表格导出为HTML格式,使用MIME类型
text/html:$download = $service->files->export('1GDeQU7mVbipmQlPTTccmznUeJ0AgFyNrGA4TfzTgEys', 'text/html', array('alt' => 'media')); $htmlContent = $download->getBody()->getContents(); - 用PHP的
ZipArchive类手动将HTML内容压缩为ZIP文件:$zip = new ZipArchive(); $zipFileName = 'exported_table.zip'; if ($zip->open($zipFileName, ZipArchive::CREATE) === TRUE) { $zip->addFromString('table.html', $htmlContent); $zip->close(); // 后续可以处理这个zip文件 }
内容的提问来源于stack exchange,提问作者Chalda Pnuzig
相关产品推荐
相关产品推荐

