Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 AmazonS3是否提供了设置blob的Content-MD5头的方法?_Amazon S3_Amazon Web Services - Fatal编程技术网

Amazon s3 AmazonS3是否提供了设置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

我正在尝试将blob上载到S3,并使用.NETAPI指定“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存储有几种方法可以做到这一点。

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

显然,ETAG存储了十六进制版本的MD5哈希。这基本上满足了我的需求,但并不理想Content-MD5看起来很标准。谢谢,我现在明白了。我很好奇为什么他们不允许头球。考虑到Etag,这有点多余,但Content-MD5更标准。Etag和Content-MD5并不总是相同的,在多部分上传中不一样(高于阈值的文件被分割)。