Задача: загрузить уже сжатый файл в корзину Amazon AWS S3 с помощью пакета AWSSDK.S3 в. NET Core и установить для заголовка Content-Encoding значение «gzip».
У меня есть корзина S3, в которую я пытаюсь загрузить. Я использую поток ввода-вывода для данных, но нет возможности установить Content-Encoding элемента в процессе загрузки. Это заголовок, который я хочу установить, когда элемент будет обслуживаться службой S3 (это не Content-Encoding для самой загрузки).
Я использую объекты TransferUtility и TransferUtilityUploadRequest. В то время как вы можете просто установить Content-Type (см. Ниже), нет свойства для установки Content-Encoding. Если вы используете функцию Metadata.Add, она автоматически перепишет Content-Encoding на специальный ключ «x-amz-meta-content-encoding», что, конечно, бесполезно.
Насколько я понимаю, вы можете Я не устанавливаю метаданные в S3 постфактум, кроме как путем копирования объекта или выполнения этого самостоятельно вручную (для меня это не- go, слишком много файлов). При копировании объекта я не уверен, что все равно смогу установить метаданные.
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);
}
Он будет загружен в новый файл в S3, но не будет иметь установленный заголовок Content-Encoding .
Помогите пожалуйста, кто угодно! спасибо!