CONTENT-MD5 缺少 AZURE 门户



我正在使用 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);

但仍然没有运气。关于如何解决这个问题的任何想法?

在以下代码行中:

string blockHash = GetMd5FromStream(new MemoryStream(file));
blockBlob.PutBlock(blockId, new MemoryStream(file, true), blockHash);
// To commit transaction
blockBlob.PutBlockList(blockIDsBase64);

您实际上是在计算块数据的 MD5 哈希。当存储服务收到此数据时,它会执行哈希验证,以确保块数据未损坏。

BlobRequestOptions opt = new BlobRequestOptions();
opt.StoreBlobContentMD5 = true;
UseTransactionalMD5 = true;
blockBlob.PutBlockList(blockIDsBase64, null, opt);

上面的代码不会指示存储服务计算要上传的 Blob 的哈希。需要自己计算 blob 的 MD5 哈希,并将其作为属性的一部分发送

,如下所示:
blockBlob.Properties.ContentMD5 = "computed hash";
blockBlob.PutBlockList(blockIDsBase64, null, opt);

最新更新