使用Google Drive API修改文件父ID时生成空版本的问题咨询
问题根源与修正方案
你的API调用存在关键错误:误用了Drive的上传端点,这才导致生成0字节的无效修订版。
- 你当前使用的是
/upload/drive/v3/files/路径,这个端点专门用于上传/更新文件内容、创建包含文件数据的修订版。当你用PATCH请求这个端点但未传递任何文件内容时,就会生成空的0字节修订版,进而导致文件无法正常预览或下载。 - 修改文件父级(移动文件)属于文件元数据更新操作,应该使用普通的文件元数据更新端点,而非上传端点。
正确的curl命令
curl \ --silent \ --fail \ -H "Authorization: Bearer $ACCESS_TOKEN" \ --request PATCH \ "https://www.googleapis.com/drive/v3/files/$FILE_ID\ ?supportsAllDrives=true\ &supportsTeamDrives=true\ &removeParents=$OLD_PARENT_ID\ &addParents=$NEW_PARENT_ID"
注:可移除GData-Version: 3.0请求头,这是旧版API的要求,Drive v3 API无需该头。
补充说明
Google Drive API文档中提到的「更新请求必须使用addParents和removeParents参数修改父级列表」,指的是普通的文件元数据PATCH请求,而非上传内容的请求。使用正确端点后,移动文件操作只会更新文件的父级元数据,不会生成额外修订版,也就不会出现文件无法访问的问题。
内容的提问来源于stack exchange,提问作者TommyD
相关产品推荐
相关产品推荐

