我使用以下方式将bobs上传到我的azure云存储中。我面临的问题是,如果用户退出Web应用程序或上传中断,部分上载的blob仍会保留在存储上。在Azure中处理中断blob上传的方式是什么?
代码:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(cloudString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
container.CreateIfNotExists();
container.SetPermissions(
new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
CloudBlockBlob blockBlob = container.GetBlockBlobReference(uniqueBlobName);
blockBlob.UploadFromByteArray(f, 0, f.Length);
答案 0 :(得分:4)
在将文件作为块blob上传时,有两种可能的情况:
1)您什么都不做 - 如果您不做任何事情,上传但未提交的块将在7(或14)天后自动被存储服务删除。这种方法的缺点是你会为那些日子支付这些字节。
2)您可以以编程方式删除未提交的blob - 您可以获取容器中未提交的Blob列表并删除这些Blob。我建议的一件事是你发现未提交的blob在一段时间内没有被修改,因此你不会删除仍在上传的blob。
<强>更新强>
我有机会玩未提交的blob。当您使用BlobListingDetails.UncommittedBlobs
列出blob时,它将返回已提交和未提交的Blob。识别未提交的blob的一种方法是检查它的ETag
属性。在我的小实验中,我发现ETag
属性为null
,blob长度为0 bytes
,如果是未提交的blob。