将文档上传到 Google 云端硬盘时检测冲突

2023-12-06

我的 Android 应用程序更新了 Google 云端硬盘文档。该文件也可以在其他地方修改(例如通过云端硬盘网络界面),因此文件上传可能会发生冲突。然而,这种情况应该很少发生。这就是为什么我不希望我的应用程序首先查询修订历史记录(因为这在大多数情况下是不必要的),然后才更新文件。如何检测更新文件时存在冲突?

到目前为止我的调查表明getHeadRevisionId() 返回 null虽然已报告空头修订 ID 已修复。 我尝试的另一件事是在 update() 之前在文件上 setEtag() 。它应该给我更新错误,但是即使文件被远程更改,上传也成功了!这是使用 ETag 的正确方法吗?


Set the If-MatchHTTP 标头:

final Update update = mService.files().update(mDriveFile.getId(), mDriveFile, byteContent);
final HttpHeaders headers = update.getRequestHeaders();
headers.setIfMatch(mDriveFile.getEtag());
update.setRequestHeaders(headers);
mDriveFile = update.execute();

如果文档同时发生更改,更新将被拒绝,并显示如下响应:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 412 Precondition Failed
{
  "code": 412,
  "errors": [
    {
      "domain": "global",
      "location": "If-Match",
      "locationType": "header",
      "message": "Precondition Failed",
      "reason": "conditionNotMet"
    }
  ],
  "message": "Precondition Failed"
}

注意即使内容没有变化,ETag 也可能会变化.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将文档上传到 Google 云端硬盘时检测冲突 的相关文章

随机推荐

  • 如何可靠地猜测 MacRoman、CP1252、Latin1、UTF-8 和 ASCII 之间的编码 [重复]

    这个问题在这里已经有答案了 在工作中 似乎每周都会遇到一些与编码相关的忧虑 灾难或灾难 该问题通常源于程序员认为他们可以在不指定编码的情况下可靠地处理 文本 文件 但你不能 因此决定从今以后禁止文件名以以下结尾 txt or text 人们
  • 错误“‘git’未被识别为内部或外部命令”

    我安装了 Windows 版 Git 但是当我尝试使用git命令提示符中的命令 我收到以下错误 git is not recognized as an internal or external command operable progra
  • 是否可以从列表中的项目获取索引?

    我的意思是 我有一个列表框 我将列表放入 itemsSource 属性中 我还想显示它的绑定中的索引 我不知道这在 WPF 中是否可行 谢谢 有几种方法可以做到这一点 包括使用 AlternationIndex 的一些解决方法 但是 由于我
  • iOS,将文件从收件箱文件夹复制到文档路径

    我启用了文档类型以将文件从其他应用程序导入或复制到我的应用程序 我有一些疑问 1 应该在哪里创建将文件从收件箱移动到文档目录的方法 这是正确的地方吗 func applicationWillEnterForeground applicati
  • 将语音输出解析为 JSON 以调用应用程序 API

    这是一个想法 我们有带有公开的 Restful API 的 Web 应用程序 它接受 json 现在 如何使用 Google 语音 API 获取用户语音输入 将其转换为文本 然后以某种方式将该文本转换为 API 所需的 JSON 然后使用
  • 未找到样式属性 attr/@attr/minTextSize

    我长期以来一直在尝试找出问题所在 但不幸的是无法 If I do android enableAapt2 true 代码工作正常 但是删除相同的代码 应该是强制的 会抛出错误 incremental mergeDevDebugResourc
  • 如何合并两个文件?

    我有两个文件 File 1 7118 7457 7591 7539 8001 File 2 5003 5008 5011 5026 5028 5029 5031 我需要的输出 7118 5003 7457 5003 7591 5003 75
  • Scala 中的右关联方法有什么好处?

    我刚刚开始使用 Scala 并且刚刚了解了如何创建方法右结合 与更传统的左结合性在命令式面向对象语言中很常见 起初 当我看到示例代码时consScala 中的列表 我注意到每个示例总是在右侧有列表 println 1 List 2 3 4
  • Elasticsearch - 从 6.7 升级到 7.0 后,此搜索不会返回正确的结果

    query constant score filter bool should terms field a value1 value2 must term field b value
  • JPEG编码器速度超慢,如何优化?

    我正在 Flash 构建器中使用 actionscript 3 0 构建一个应用程序 这是一个后续问题这个问题 我需要将字节数组上传到我的服务器 但是我使用的函数将位图数据转换为ByteArray速度超级慢 慢到我的移动设备都卡住了 我的代
  • Sencha Touch 复选框字段具有带有长标签的时髦布局

    我的应用程序中的几个复选框字段有很长的标签 不幸的是它会导致一些奇怪的行为 有什么办法可以让这个看起来好一点吗 我的意思是 如果我 触摸 灰色区域 复选框不会激活 即使复选框位于灰色区域内 但我必须单击白色区域 这有点令人困惑 即使我设定l
  • 如何在 Oracle 查询中禁用 PL/SQL

    以下是我希望阻止在我的服务器上运行的查询类型的示例 begin While True LOOP dbms output put line tst END LOOP end 此查询 或其他类似查询 可能通过 Oracle JDBC 瘦驱动程序
  • Swift - 更新/刷新显示时间的标签

    我有一个以 12 小时格式显示当前时间的标签 但是 它不会在每次分钟 小时更改时更新 刷新时间 我需要它在时间改变时自动将标签更改为当前时间 斯威夫特 3 解决方案 class ViewController IBOutlet weak va
  • onfocus时如何更改文本框的背景颜色?

    我尝试了这段代码 但它不起作用 当我聚焦文本框时 它显示错误 function ChangeBgColor obj evt if evt type focus style background lightgrey else if evt t
  • bxslider 上 z 索引元素的顺序

    我需要使用无子元素来订购 bxslider 的内容 图像和顶部文本之间 e g div ul li img src image1 jpg span text span li ul div class under text over imag
  • Facebook ShareDialog 中未显示说明

    我正在 Android 应用程序中使用 Facebook 的 ShareDialog 尝试 ShareLinkContent 以下是我使用过的代码片段 我有帖子所需的内容标题和描述 当我尝试发布它时在手机中显示时很好 但是当我在 Faceb
  • 在Python 2.7中读取大型lz4压缩JSON数据集[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我需要分析作为 lz4 压缩 JSON 文件分发的大型数据集 压缩后的文件将近1TB 由于成本原因 我不想将其解压缩到磁盘 数据集中的每条 记录 都非常小 但将整个数据集读入内存显然是不可
  • 不使用 Azure 客户端 SDK 连接到 IoT 中心

    我想不使用客户端 SDK 连接到 Azure Iot Hub 在https azure microsoft com nb no blog upload files from devices with azure iot hub 有关于如何执
  • 如何添加到 Windows 中的 PYTHONPATH,以便它找到我的模块/包?

    我有一个目录 其中托管我的所有 Django 应用程序 C My Projects 我想将此目录添加到我的PYTHONPATH这样我就可以直接调用应用程序 我尝试添加C My Projects 到我的 WindowsPath来自 Windo
  • 将文档上传到 Google 云端硬盘时检测冲突

    我的 Android 应用程序更新了 Google 云端硬盘文档 该文件也可以在其他地方修改 例如通过云端硬盘网络界面 因此文件上传可能会发生冲突 然而 这种情况应该很少发生 这就是为什么我不希望我的应用程序首先查询修订历史记录 因为这在大