Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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 web services 如何使用.NET中的AWSSDK.S3包设置上传到AWS S3的内容编码?_Amazon Web Services_Amazon S3_.net Core_Awss3transferutility - Fatal编程技术网

Amazon web services 如何使用.NET中的AWSSDK.S3包设置上传到AWS S3的内容编码?

Amazon web services 如何使用.NET中的AWSSDK.S3包设置上传到AWS S3的内容编码?,amazon-web-services,amazon-s3,.net-core,awss3transferutility,Amazon Web Services,Amazon S3,.net Core,Awss3transferutility,任务:使用.NET Core中的AWSSDK.S3包将已压缩的文件上载到Amazon AWS S3 bucket,并将内容编码头设置为“gzip” 我有一个S3存储桶,我正试图上传到它。我对数据使用IO流,但在上传过程中无法设置项目的内容编码。这是我想要设置的标题,当由S3服务提供时,该项目将具有该标题(它不是上传本身的内容编码) 我正在使用TransferUtility和TransferUtilityUploadRequest对象。虽然您可以很好地设置内容类型(请参见下文),但并没有设置内容编

任务:使用.NET Core中的AWSSDK.S3包将已压缩的文件上载到Amazon AWS S3 bucket,并将内容编码头设置为“gzip”

我有一个S3存储桶,我正试图上传到它。我对数据使用IO流,但在上传过程中无法设置项目的内容编码。这是我想要设置的标题,当由S3服务提供时,该项目将具有该标题(它不是上传本身的内容编码)

我正在使用TransferUtility和TransferUtilityUploadRequest对象。虽然您可以很好地设置内容类型(请参见下文),但并没有设置内容编码的属性。如果使用Metadata.Add函数,它将自动将内容编码重写为自定义的“x-amz-meta-Content-Encoding”键,这当然是无用的

据我所知,你不能在S3中设置元数据,除非复制对象,或者自己手动(这对我来说是不可能的,文件太多了)。通过复制对象,我不确定是否能够设置元数据

            var s3Client = new AmazonS3Client(awsCreden‌​tials, bucketRegion);
            var fileTransferUtility = new TransferUtility(s3Client);

            byte[] compressedDataArray = <some compressed data>;
            using (MemoryStream memoryStream = new MemoryStream(compressedDataArray)) {
                var fileTransferUtilityRequest = new TransferUtilityUploadRequest {
                    BucketName = bucketName,
                    ContentType = "application/json",
                    StorageClass = S3StorageClass.Standard,
                    Key = fileKey + ".gz",
                    CannedACL = S3CannedACL.PublicRead,
                    InputStream = memoryStream,
                    AutoCloseStream = true
                };
                fileTransferUtilityRequest.Metadata.Add("Content-Encoding", "gzip");
                fileTransferUtility.Upload(fileTransferUtilityRequest);
            }
var s3Client=newamazons3client(awsCreden)‌​头饰,巴克区);
var fileTransferUtility=新的TransferUtility(s3Client);
字节[]压缩数据数组=;
使用(MemoryStream MemoryStream=新的MemoryStream(compressedDataArray)){
var fileTransferUtilityRequest=新的TransferUtilityUploadRequest{
BucketName=BucketName,
ContentType=“application/json”,
StorageClass=S3StorageClass.Standard,
Key=fileKey+“.gz”,
CannedACL=S3CannedACL.PublicRead,
InputStream=memoryStream,
AutoCloseStream=true
};
fileTransferUtilityRequest.Metadata.Add(“内容编码”、“gzip”);
上传(fileTransferUtilityRequest);
}
它将上传到S3中的新文件,但不会设置内容编码头


任何人都请帮忙!谢谢

好的,似乎有效的方法是在请求的Headers集合上设置ContentEncoding:

fileTransferUtilityRequest.Headers.ContentEncoding = "gzip";