我有一个 JPEG 缓冲区,它可以从 S3 成功上传和下载。但是,我试图通过 Messenger API 发送它,当以编程方式访问它时,Messenger 会抛出错误,因为根据 S3 控制台,图像的实际 Content-Type
是 application/八位字节流
。
我手动输入的元数据显示在 x-amz-meta-content-type
下。根据 AWS 文档,这是默认行为。我如何覆盖它以在 Content-Type
下获取 image/jpeg
?
我的代码:
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);
}
})
关于javascript - (nodeJS) S3 对象的内容类型 : manually set to 'image/jpeg' but in S3 console comes up as 'application/octet' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47096483/