Amazon s3 AmazonS3是否提供了设置blob的Content-MD5头的方法?
我正在尝试将blob上载到S3,并使用.NETAPI指定“Content-MD5”头。我希望这样做,以便a)S3验证散列,b)每当客户端下载文件时,他们都会读取blob上的“Content-MD5”头,并在客户端进行验证 大概是这样的:Amazon s3 AmazonS3是否提供了设置blob的Content-MD5头的方法?,amazon-s3,amazon-web-services,Amazon S3,Amazon Web Services,我正在尝试将blob上载到S3,并使用.NETAPI指定“Content-MD5”头。我希望这样做,以便a)S3验证散列,b)每当客户端下载文件时,他们都会读取blob上的“Content-MD5”头,并在客户端进行验证 大概是这样的: PutObjectRequest request = new PutObjectRequest(); request.WithFilePath(fileName) .WithBucketName(S3_BU
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存储有几种方法可以做到这一点。没有任何S3文件的MD5是不可能的? 注:ETag和Content-MD5相同。
您可以使用ETAG验证下载流显然,ETAG存储了十六进制版本的MD5哈希。这基本上满足了我的需求,但并不理想Content-MD5看起来很标准。谢谢,我现在明白了。我很好奇为什么他们不允许头球。考虑到Etag,这有点多余,但Content-MD5更标准。Etag和Content-MD5并不总是相同的,在多部分上传中不一样(高于阈值的文件被分割)。