如何上传来的Azure Blob存储而不覆盖? [英] How do I upload to Azure Blob storage without overwriting?
问题描述
调用UploadFromStream覆盖默认的文件 - 我怎么能保证我只上传一个blob,如果它是不是已经在容器
? CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);
blockBlob.UploadFromStream(流)
增加接入条件的code,以便它检查对<一href="http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.blobproperties.etag.aspx">ETag blob的财产 - 通配符是允许的,所以我们希望只允许上传,如果没有斑点这个名字有什么ETAG(这是说一种迂回的方式,这是否BLOB名称存在)
您获取详情如下一个StorageException。
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);
尝试 {
blockBlob.UploadFromStream(流,accessCondition:AccessCondition.GenerateIfNoneMatchCondition(*));
}赶上(StorageException前){
如果(ex.Message.Contains((409)冲突)){
//处理重复BLOB条件
}
扔;
}
Calling UploadFromStream overwrites files by default - how can I make sure I only upload a blob if it isn't already in the container?
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);
blockBlob.UploadFromStream(stream)
Add an access condition to the code so that it checks against the ETag property of the blob - wildcards are allowed, so we want to only allow the upload if no blobs with this name have any etag (which is a roundabout way of saying, does this blob name exist).
You get a StorageException as detailed below.
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);
try {
blockBlob.UploadFromStream(stream, accessCondition: AccessCondition.GenerateIfNoneMatchCondition("*"));
} catch (StorageException ex) {
if (ex.Message.Contains("(409) Conflict")) {
// Handle duplicate blob condition
}
throw;
}
这篇关于如何上传来的Azure Blob存储而不覆盖?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!