(nodeJS) Content-Type для объекта S3: вручную установлено значение "image/jpeg", но в консоли S3 отображается как "application/octet"

Вопрос:

У меня есть буфер JPEG, который загружает и загружает с S3. Тем не менее, я пытаюсь отправить его через API-интерфейс Messenger, и когда он обращается к программному программному обеспечению, Messenger выдает ошибки, потому что в соответствии с консолью S3 фактический Content-Type изображения является application/octet-stream.

Мои введенные вручную метаданные отображаются в x-amz-meta-content-type. Согласно документации AWS это поведение по умолчанию. Как я могу переопределить его для получения image/jpeg в Content-Type?

Мой код:

var s3 = new AWS.S3();
var params = {
Body: buffer,
Bucket: <bucket>,
Key: <key>,
Metadata: {
'Content-Type': 'image/jpeg'
}
};
s3.putObject(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else  {
console.log(data);
}
})

Лучший ответ:

Не устанавливайте его в разделе » Metadata «, только для свойств, которые будут иметь префикс x-amz-meta. На основном уровне есть параметр ContentType, например:

var s3 = new AWS.S3();
var params = {
  Body: buffer,
  Bucket: <bucket>,
  Key: <key>,
  ContentType: 'image/jpeg'
};
s3.putObject(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else  {
    console.log(data);
  }
})

Оцените статью
TechArks.Ru
Добавить комментарий