Rob*_*rch 19 .net azure azure-storage
默认情况下调用UploadFromStream会覆盖文件 - 如果blob尚未包含在容器中,我如何确保只上传blob?
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);
blockBlob.UploadFromStream(stream)
Run Code Online (Sandbox Code Playgroud)
Rob*_*rch 17
为代码添加一个访问条件,以便它检查blob 的ETag属性 - 允许使用通配符,所以我们只想允许上传,如果没有带有此名称的blob有任何etag(这是一种迂回的说法,是这个blob名称存在).
您将获得StorageException,如下所述.
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);
try {
blockBlob.UploadFromStream(stream, accessCondition: AccessCondition.GenerateIfNoneMatchCondition("*"));
} catch (StorageException ex) {
if (ex.RequestInformation.HttpStatusCode == (int)System.Net.HttpStatusCode.Conflict) {
// Handle duplicate blob condition
}
throw;
}
Run Code Online (Sandbox Code Playgroud)
Azure现在具有只会添加而不是覆盖的访问条件: AccessCondition.GenerateIfNotExistsCondition()
定义:
构造一个访问条件,以便仅在资源不存在时才执行操作.
例:
var accessCondition = AccessCondition.GenerateIfNotExistsCondition();
blockBlob.UploadFromStream(stream, accessCondition);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7188 次 |
| 最近记录: |