【发布时间】:2017-10-29 15:42:28
【问题描述】:
我正在使用 c# 库在 AZURE blob 存储中上传文件。如果我使用 byte[] 上传文件,它会计算 MD5(在 AZURE 门户中验证 - 显示 CONTENT-MD5 值)。
CloudBlockBlob blockBlob = GetUserProjectsBlob(blobName);
blockBlob.UploadFromByteArray(file, 0, file.Length);
我需要将一个大文件上传到 AZURE。所以我正在使用 PutBlock 和 PutBlockList 方法..
string blockHash = GetMd5FromStream(new MemoryStream(file));
blockBlob.PutBlock(blockId, new MemoryStream(file, true), blockHash);
// To commit transaction
blockBlob.PutBlockList(blockIDsBase64);
但在上述情况下,AZURE 门户中缺少 CONTENT-MD5。这个我也试过了。。
BlobRequestOptions opt = new BlobRequestOptions();
opt.StoreBlobContentMD5 = true;
UseTransactionalMD5 = true;
blockBlob.PutBlockList(blockIDsBase64, null, opt);
但仍然没有运气。关于如何解决这个问题的任何想法?
【问题讨论】:
-
您通过代码执行此操作是否有原因?我只是问,因为如果您只是复制文件,AZCopy 可能会更好
-
@JasonH 我将它用于 WebApi。
-
我对另一个技术细节很感兴趣 - 您是否有理由逐块上传它?为什么全 Blob 上传 API(
UploadFromFIle、UploadFromStream、...)不适合您?