试图对谷歌驱动器上的文件进行原子更新

时间:2018-03-30 11:59:51

标签: google-drive-api

我需要对google驱动器上的文件进行原子更新..即,如果自上次下载文件后该文件没有更改,则更新应该会成功。

我在更新请求中使用If-Match:标头

我遇到的问题是我使用以下端点下载文件:

https://www.googleapis.com/drive/v2/files/${fileId}?alt=media

响应包含正文中文件的内容,并在响应头中返回一个etag,如下所示:

etag:""hcahzZRGAO5dFBAGGfvDlnfbXEY/LTExOTA5OTEyOTk""

然而,如果我只是查询文件元数据,这个etag不等于我得到的etag ..使用

https://www.googleapis.com/drive/v2/files/${fileId}

毫不奇怪,如果我尝试使用下载过程中收到的If-Match: <etag>对文件进行更新,则更新失败并显示错误&#39;前置条件失败&#39;

显然不是理想情况下执行http请求从文件元数据中获取etag,然后使用该etag进行更新,因为其他一些进程可能同时更改了文件。

如何获取文件的etag以及文件本身的下载?

0 个答案:

没有答案