0

我正在尝试将 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 存储有多种方法可以做到这一点。

4

1 回答 1

2

没有任何 S3 文件的 MD5 是不可能的吗?注意:ETag 和 Content-MD5 相同。您可以使用 ETAG 验证您的下载流

于 2012-10-17T06:32:06.677 回答