我正在尝试将 blob 上传到 S3 并使用 .NET API指定“ Content-MD5 ”标头。我想这样做,以便 a) S3 验证哈希,b) 每当客户端下载文件时,他们将读取 blob 上的“ Content-MD5 ”标头并在客户端进行验证。
像这样的东西:
PutObjectRequest request = new PutObjectRequest();
request.WithFilePath(fileName)
.WithBucketName(S3_BUCKET_NAME)
.WithKey(fileKey)
.WithTimeout(FIVE_MINUTES)
.WithMD5Digest("ubewX5M7uzz64zskr7FThQ==");
这似乎将头部放在请求中,并且 S3 正确验证了哈希。问题是,如果我之后查看 blob 标头,它们不满足“ Content-MD5 ”标头,因此我无法让下游客户端在从上面下载(要求 b)后验证文件)。
我尝试了其他方法来设置 blob 上的标题,但这些方法都不起作用:
request.AddHeaders(Amazon.S3.Util.AmazonS3Util.CreateHeaderEntry("Content-MD5", "ubewX5M7uzz64zskr7FThQ=="));
request.AddHeader("Content-MD5", "ubewX5M7uzz64zskr7FThQ==");
request.WithMetaData("Content-MD5", "ubewX5M7uzz64zskr7FThQ==");
我什至尝试使用 CloudBerry 来更新 blob 的标头,但是尽管 Cloudberry 将请求发送到 S3(并且没有抱怨),但 blob 仍然不包含标头。
有任何想法吗?S3甚至可以做到这一点吗?AzureBlob 存储有多种方法可以做到这一点。