Ron*_*Ron 6 metadata blob azure azure-storage-blobs
我需要在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对我的情况有一个很好的解决方法.
这是解决您的问题的一种可能的解决方案。目前,当您创建 SAS URL 时,由于您的最终用户正在使用它具有Write权限上传文件。您要做的就是修改您的 SAS URL 以包含Read权限。
在客户端应用程序上,收到 SAS URL 后,您要做的第一件事就是使用Get Blob MetadataREST API 操作读取 blob 的元数据。您不需要为此目的使用 Azure SDK。您将发出一个Head请求,并且您的请求 URL 将仅https://[account].blob.core.windows.net/[container]/[blob]?sastoken&comp=metadata使用WebClient。获取元数据后,您可以x-ms-meta-*在用户上传文件时将其作为请求标头传递回来。
| 归档时间: |
|
| 查看次数: |
696 次 |
| 最近记录: |