gpt4 book ai didi

azure - 覆盖 Blob 但保留元数据?

转载 作者:行者123 更新时间:2023-12-04 15:10:21 28 4
gpt4 key购买 nike

我需要存储有关 blob(文件的本地路径)的信息,并且能够覆盖该 blob 但保留信息。

我尝试了元数据方法,它正是我所寻找的,但是一旦我覆盖 blob,元数据也会被覆盖。

有什么方法可以覆盖 blob 但保留旧的元数据吗?

Updating an existing block blob overwrites any existing metadata on the blob

Reference

MSDN 声明有部分更新选项:

To perform a partial update of the content of a block blob, use the Put Block List operation.

Put Block List

问题是如何设置部分更新以仅更新 blob 的数据而不更新元数据?

谢谢。

更新(更多信息):

我有一个云服务,可以从客户端获取文件并将文件返回给客户端。

所以实际发生的是:

客户端向服务发送请求以生成在 blob 存储中存储一个 blob 的访问权限,服务返回给他 URL+SAS ,我还创建了一个具有一个字符的实际 blob,以便在 blob 上保存元数据。

客户端获取URL+SAS并开始使用Web客户端库上传文件。

一旦客户端上传了文件,他将使用提供给他的相同 URL 向服务器发送请求(并简单地告诉服务,这是我的文件,做你的事情)

服务器将操作该文件并覆盖相同的 blob,并返回整个操作的日志。

客户端可以读取日志并可以从同一 URL 下载"new"文件。

正如您可能注意到的,问题是我让客户端覆盖我的 blob,他(客户端)要求我上传文件,我向他返回 URL+SAS,但是当我生成 SAS token 时,我还创建了一位blob 保存元数据,直到用户上传到实际数据,因此我不能要求用户先获取元数据然后上传(我需要上传来自 Webclient 库,而不需要像 Azure API 这样的特殊依赖项)。

结论

所以我的问题答案的底线是“不,没有办法覆盖 blob 并保存元数据”,但是 Gaurav Mantri 对于我的情况有一个很好的解决方法。

最佳答案

这是解决您的问题的一种可能的解决方案。目前,当您创建 SAS URL 时,由于您的最终用户正在使用它上传文件,因此它具有Write 权限。您要做的就是修改您的 SAS URL 以包含读取权限。

在客户端应用程序上,收到 SAS URL 后,您要做的第一件事就是使用 Get Blob Metadata 读取 blob 的元数据。 REST API 操作。您不需要为此目的使用 Azure SDK。您将执行 Head 请求,您的请求 URL 将为 https://[account].blob.core.windows.net/[container]/[blob]?sastoken&comp=metadata 仅使用 WebClient。获取元数据后,您可以在用户上传文件时将其作为 x-ms-meta-* 请求 header 传回。

关于azure - 覆盖 Blob 但保留元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30072370/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com