![我可以在 Google Drive 中进行原子写入,或者至少不是部分写入吗?](https://linux22.com/image/1537766/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%9C%A8%20Google%20Drive%20%E4%B8%AD%E8%BF%9B%E8%A1%8C%E5%8E%9F%E5%AD%90%E5%86%99%E5%85%A5%EF%BC%8C%E6%88%96%E8%80%85%E8%87%B3%E5%B0%91%E4%B8%8D%E6%98%AF%E9%83%A8%E5%88%86%E5%86%99%E5%85%A5%E5%90%97%EF%BC%9F.png)
我已经编写了自己的软件来访问“Google Drive”,我发现即使提供了 MIME 框架,如果 HTTP 连接中断,Google 也会很乐意写入部分文件。
我正在使用 API 作为 POST 来“https://www.googleapis.com/upload/drive/v3/files“表示‘uploadType’:‘multipart’,一个“content-type”:“multipart/related”标头和一个格式正确的 MIME 多部分文件。因此,对于 Google 来说,检测文件是否完整是微不足道的,但显然,它并没有这样做。这是微不足道的,因为 MIME 分段上传有一个特定的尾部,如果上传不完整,该尾部将会丢失。
我的问题:
我能做些什么来让 Google 不存储部分文件?也许可以使用 MD5 标头?可以使用内容长度标头?
如果没有,除了我的程序“知道”某个文件上传已部分完成之外,还有其他方法可以检测它(可能是可搜索的元数据)吗?也许是“CHANGES”API?
提前感谢您的时间!
附言:我可以执行“保存为另一个文件名”+“当您确定 Google 拥有完整文件时重命名为正确的文件名”,但这样我会因为延迟而上传一半的速度(是的,我可以进行流水线操作),更糟糕的是,浪费了我稀缺的 API 速率限制的一半。如果没有其他选择……
答案1
这是我的代码中的一个错误。Google 似乎按预期工作。
抱歉造成了噪音,请原谅。