我可以在不显式调用 headObject 的情况下从 S3 对象流中获取 Content-Type 吗?

cav*_*a23 9 amazon-s3 amazon-web-services node.js

我正在将文件从 S3 并通过我的 API 流式传输到客户端,以强制执行访问控制规则。这样做时,我需要适当地设置内容类型标头。有谁知道一种无需单独调用 headObject 即可从 S3 获取内容类型的方法?现在我必须首先获取对象元数据,然后再发出另一个请求来获取对象流。

编辑:为了澄清,我正在使用

return s3.getObject(params).createReadStream();
Run Code Online (Sandbox Code Playgroud)

获取流,所以没有我知道的回调。

Sri*_*hsa -6

S3 将使用您指定的对象来保存您指定的对象Content-Type,同时通过调用该putObject函数来保存您的数据。

s3Instance.putObject({
  Bucket: "my-bucket",
  ContentType: "application/xml",
  Body: xmlContent
}, function(err) {
  //callback here
});
Run Code Online (Sandbox Code Playgroud)

来源http ://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property

Content-Type调用函数时返回对象的与getObject您上面指定的相同。Content-Type但是,您可以在调用该函数时设置您想要的getObject

s3Instance.getObject({
  Bucket: "my-bucket",
  Key: "MyXMLFile",
  ContentType: "text/xml"
}, function(err, data) {
  //callback here
});
Run Code Online (Sandbox Code Playgroud)

来源http ://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getObject-property