首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内容-md5缺少AZURE门户

内容-md5缺少AZURE门户
EN

Stack Overflow用户
提问于 2017-05-29 10:49:29
回答 1查看 2.3K关注 0票数 4

我正在使用c#库在AZURE blob存储中上传文件。如果我用byte[]上传一个文件,它会计算MD5 (在AZURE中验证-显示内容-MD5值)。

代码语言:javascript
运行
复制
CloudBlockBlob blockBlob = GetUserProjectsBlob(blobName);
blockBlob.UploadFromByteArray(file, 0, file.Length);

我需要上传一个大文件到AZURE。所以我用的是PutBlock & PutBlockList方法。

代码语言:javascript
运行
复制
string blockHash = GetMd5FromStream(new MemoryStream(file));
blockBlob.PutBlock(blockId, new MemoryStream(file, true), blockHash);
// To commit transaction
blockBlob.PutBlockList(blockIDsBase64);

但是在上面的场景中,AZURE门户中缺少了CONTENT-MD5。我也试过这个..。

代码语言:javascript
运行
复制
BlobRequestOptions opt = new BlobRequestOptions();
opt.StoreBlobContentMD5 = true;
UseTransactionalMD5 = true;
blockBlob.PutBlockList(blockIDsBase64, null, opt);

但还是没有运气。对如何解决这个问题有什么想法吗?

EN

Stack Overflow用户

发布于 2017-05-29 11:22:09

在以下代码行中:

代码语言:javascript
运行
复制
string blockHash = GetMd5FromStream(new MemoryStream(file));
blockBlob.PutBlock(blockId, new MemoryStream(file, true), blockHash);
// To commit transaction
blockBlob.PutBlockList(blockIDsBase64);

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

代码语言:javascript
运行
复制
BlobRequestOptions opt = new BlobRequestOptions();
opt.StoreBlobContentMD5 = true;
UseTransactionalMD5 = true;
blockBlob.PutBlockList(blockIDsBase64, null, opt);

上面的代码并不指示存储服务计算要上传的blob的散列。您需要自己计算blob的MD5散列,并将其作为属性的一部分进行如下操作:

代码语言:javascript
运行
复制
blockBlob.Properties.ContentMD5 = "computed hash";
blockBlob.PutBlockList(blockIDsBase64, null, opt);
票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44240655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档