【发布时间】:2019-02-20 15:42:52
【问题描述】:
是否有可靠的方法来检查文件是否在云端硬盘中更新/更改,而不是比较完整内容?
我已经为此苦苦挣扎了一段时间。这是我尝试过的两件事:
1.档案version号码
我将纯文本文件上传到 Google 云端硬盘(simple upload、update endpoint),并保存上传成功后返回的file metadata 中的version。
然后我偶尔轮询 Drive API (get endpoint) 以检查版本是否已更改。
问题在于,在上传文件后的一两秒内,版本又会变高。
文件内容没有变化。该文件尚未在其他任何地方打开、查看甚至下载。不过,版本号比上传后的版本号有所增加。
对于我的代码,此版本号更改表明云端硬盘中的远程文件已更改,因此它会下载新版本。每次!
2。 Changes 端点
作为替代方案,我尝试使用Changes api。
上传文件后,我使用changes.getStartPageToken 或changes.list 获得page token。
稍后我使用这个page token 来轮询 Changes API 的更改,并过滤已上传文件的 fileId 的更改。我在轮询更改时使用这些选项:
{
"includeRemoved": false
"restrictToMyDrive": true
"spaces": "drive"
}
这里又是和版本号一样的问题。上传文件后立即返回的页面令牌会在一两秒内再次更改。新页面令牌显示上传的文件已更改。
同样,文件内容没有变化。它尚未在其他任何地方打开、更新、下载。它不与其他任何人共享。
然而,上传几秒钟后,文件重新出现在更改列表中。
因此,假设远程更改,本地代码会从 Drive 重新下载文件。
可能的解决方法
作为一个 hacky 钩子,我可以在文件上传后等待几秒钟,然后再获取新的文件版本/更改页面令牌。这可能会解决延迟版本增量问题。
但是,没有文档说明是什么导致了版本号(或 changes.list)的这种幻像变化。所以,我无法确定:
- 在不丢失其他用户/应用可能进行的更改的情况下,等待多长时间才能安全地获得“已确定”的版本号?
- 新的(延迟的)版本号是否会稳定,或者可能随时无缘无故再次更改?
是否有可靠的方法来检查文件是否在云端硬盘中更新/更改,而不是比较完整内容?
【问题讨论】:
标签: google-drive-api