Amazon web services 如何使用.NET中的AWSSDK.S3包设置上传到AWS S3的内容编码?
任务:使用.NET Core中的AWSSDK.S3包将已压缩的文件上载到Amazon AWS S3 bucket,并将内容编码头设置为“gzip” 我有一个S3存储桶,我正试图上传到它。我对数据使用IO流,但在上传过程中无法设置项目的内容编码。这是我想要设置的标题,当由S3服务提供时,该项目将具有该标题(它不是上传本身的内容编码) 我正在使用TransferUtility和TransferUtilityUploadRequest对象。虽然您可以很好地设置内容类型(请参见下文),但并没有设置内容编码的属性。如果使用Metadata.Add函数,它将自动将内容编码重写为自定义的“x-amz-meta-Content-Encoding”键,这当然是无用的 据我所知,你不能在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对象。虽然您可以很好地设置内容类型(请参见下文),但并没有设置内容编
var s3Client = new AmazonS3Client(awsCredentials, 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";