gpt4 book ai didi

c# - Azure.Storage.Blobs v12.x.x 中的 ContentHash 为 null

转载 作者:行者123 更新时间:2023-12-04 11:14:21 26 4
gpt4 key购买 nike

我正在尝试将我的项目从 Microsoft.WindowsAzure.Storage v9(已弃用)升级到最新的 sdk Azure.Storage.Blobs v12。

我的问题(升级后)是访问 ContentHash 属性。

升级前步骤:

  1. 将文件上传到 blob
  2. Microsoft.WindowsAzure.Storage.Blob 获取由 CloudBlob.Properties.ContentMD5 提供的上传文件的 MD5 哈希值
  3. 将计算出的 MD5 哈希值与从 Azure 检索到的 MD5 哈希值进行比较

升级后尝试访问 Azure 自行计算的 MD5 哈希值:

1.BlobClient.GetProperties() 调用此方法

2.BlobClient.UploadAsync() 查看 BlobContentInfo 响应

两者都返回ContentHash为空。 (see my later Question to see why)

我注意到的一个巨大差异是,使用较旧的 sdk,我可以告诉存储客户端使用 MD5 计算,如下所示:

CloudBlobClient cloudBlobClient = _cloudStorageAccount.CreateCloudBlobClient();

cloudBlobClient.DefaultRequestOptions.StoreBlobContentMD5 = true;

所以我希望在最新的 SDK 上找到类似于 StoreBlobContentMD5 的东西,但我找不到。

谁能帮我找到解决这个问题的方法吗?

编辑 1:我做了一个测试,在 azure 存储中我没有 MD5 hash

上传代码:

var container = _blobServiceClient.GetBlobContainerClient(containerName);
var blob = container.GetBlobClient(blobPath);

BlobHttpHeaders blobHttpHeaders = null;
if (!string.IsNullOrWhiteSpace(fileContentType))
{
blobHttpHeaders = new BlobHttpHeaders()
{
ContentType = fileContentType,
};
}

StorageTransferOptions storageTransferOption = new StorageTransferOptions()
{
MaximumConcurrency = 2,
};

var blobResponse = await blob.UploadAsync(stream, blobHttpHeaders, null, null, null, null, storageTransferOption, default);

return blob.GetProperties();

除了使用新 sdk 中的新类之外,旧上传代码和新上传代码没有太大区别。

主要区别仍然是我已经说过的,我在新的 sdk 中找不到 StoreBlobContentMD5 的等效设置。我认为这就是问题所在。我需要设置存储客户端来计算 MD5 哈希,就像我对旧 sdk 所做的那样。

编辑 2:对于下载,我可以这样做:

var properties = blob.GetProperties();
var download = await blob.DownloadAsync(range: new HttpRange(0, properties.Value.ContentLength), rangeGetContentHash: true);

通过使用 DownloadAsync 的此定义,我可以强制计算 MD5 哈希值,并且可以在 download.Value.ContentHash 中找到它

最佳答案

总结以结束问题:

我用最新版本的12.4.4 blob存储包进行了快速测试,可以看到content-md5是自动生成的,并且可以读取。

根据运算符(operator)的评论,这可能是由于现有解决方案存在一些问题。创建新的解决方案后,它按预期工作。

关于c# - Azure.Storage.Blobs v12.x.x 中的 ContentHash 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62996395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com