DataLakeFileClient中如何设置ContentMD5?

How to set ContentMD5 in DataLakeFileClient?

使用 Microsoft Azure 存储资源管理器上传到 Azure Data Lake 时,文件会自动生成并存储 ContentMD5 属性 的值。它还会在使用 Blob 绑定的函数应用程序中自动执行此操作。

但是,当从 C# DLL 上传时,这不会自动生成。

我想在以后使用这个值来比较文件。

我的上传代码很简单。

DataLakeFileClient fileClient = await directoryClient.CreateFileAsync("testfile.txt");
await fileClient.UploadAsync(fileStream);

我也知道我可以使用以下代码生成 MD5,但我不确定这是否与 Azure 存储资源管理器的生成方式相同。

using (var md5gen = MD5.Create())
{
    md5hash = md5gen.ComputeHash(fileStream);
}

但我不知道如何将此值设置为文件的 ContentMD5 属性。

我找到了解决方案。

UploadAsync 方法有一个重载,它接受 DataLakeFileUploadOptions 类型的参数。此 class 包含一个 HttpHeaders 对象,该对象又具有一个 ContentHash 属性,将其存储为文档的 属性。

var uploadOptions = new DataLakeFileUploadOptions();
uploadOptions.HttpHeaders = new PathHttpHeaders();
uploadOptions.HttpHeaders.ContentHash = md5hash;

await fileClient.UploadAsync(fileStream, uploadOptions);