我正在尝试将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存储。
答案 0 :(得分:2)
没有任何S3文件的MD5是不可能的? 注意:ETag和Content-MD5是相同的。 您可以使用ETAG验证下载流