【发布时间】:2015-07-16 07:58:15
【问题描述】:
我需要在 blob(文件的本地路径)上存储信息,并且能够覆盖该 blob 但保留信息。
我尝试了元数据方法,它正是我所寻找的,但是一旦我覆盖了 blob,元数据也会被覆盖。
有什么方法可以覆盖 blob 但保留旧的元数据?
更新现有块 blob 会覆盖 blob 上的任何现有元数据
MSDN 声明有部分更新选项:
要对块 blob 的内容执行部分更新,请使用 Put Block List 操作。
问题是如何将部分更新设置为仅更新 blob 的数据而不更新元数据?
谢谢。
更新(更多信息):
我有一个从客户端获取文件并将文件返回给客户端的云服务。
所以实际发生的是:
客户端向服务发送请求以生成在 blob 存储中存储一个 blob 的访问权限,服务返回给他 URL+SAS ,我还创建了一个具有一个字符的实际 blob,以便将元数据保存在 blob 上。
客户端获取 URL+SAS 并开始使用 Web 客户端库上传文件。
一旦客户端上传了文件,他将使用提供给他的相同 URL 向服务器发送请求(并且基本上告诉服务,这是我的文件做你的事情)
服务器将操作文件并覆盖相同的 blob 并返回整个操作的日志。
客户端可以读取日志并可以从同一 URL 下载“新”文件。
您可能注意到问题是我让客户端覆盖了我的 blob,他(客户端)要求我上传文件,我返回给他 URL+SAS 但是当我生成 SAS 令牌时,我还创建了一个位blob 保存元数据,直到用户上传到实际数据,所以我不能要求用户先获取元数据然后上传(我需要上传来自 Webclient 库,没有像 Azure API 这样的特殊依赖)。
总结
所以我的问题的答案的底线是“不,没有办法覆盖 blob 并保存元数据”,但 Gaurav Mantri 对我的情况有一个很好的解决方法。
【问题讨论】:
标签: azure metadata blob azure-blob-storage