【问题标题】:Can I get the Content-Type from an S3 object stream without making an explicit call to headObject?我可以在不显式调用 headObject 的情况下从 S3 对象流中获取 Content-Type 吗?
【发布时间】:2015-04-14 04:10:54
【问题描述】:

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

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

return s3.getObject(params).createReadStream();

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

【问题讨论】:

  • A GET 请求在您从 HEAD 请求获得的标头中返回完全相同的元数据......所以看起来您应该已经在数据中拥有您正在寻找的东西。来自 getObject 的回调中的 ContentType。你不会吗?

标签: node.js amazon-web-services amazon-s3


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 这没有回答使用s3.getObject(params).createReadStream() 模式时如何访问内容类型标头的问题。
  • 返回Unexpected key 'ContentType'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
相关资源
最近更新 更多