我可以在不显式调用 headObject 的情况下从 S3 对象流中获取 Content-Type 吗?
Posted
技术标签:
【中文标题】我可以在不显式调用 headObject 的情况下从 S3 对象流中获取 Content-Type 吗?【英文标题】:Can I get the Content-Type from an S3 object stream without making an explicit call to headObject? 【发布时间】:2015-04-14 04:10:54 【问题描述】:我正在从 S3 流式传输文件并通过我的 API 到客户端,以执行访问控制规则。为此,我需要适当地设置内容类型标头。有谁知道无需单独调用 headObject 即可从 S3 获取内容类型的方法?现在我必须先获取对象元数据,然后再发出另一个请求来获取对象流。
编辑: 为了澄清,我正在使用
return s3.getObject(params).createReadStream();
获取流,所以我知道没有回调。
【问题讨论】:
AGET
请求在您从 HEAD
请求获得的标头中返回完全相同的元数据......所以看起来您应该已经在数据中拥有您正在寻找的东西。来自 getObject 的回调中的 ContentType。你不会吗?
看看***.com/questions/35782434/…
【参考方案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'
以上是关于我可以在不显式调用 headObject 的情况下从 S3 对象流中获取 Content-Type 吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不显式编译的情况下让 Visual Studio 错误检查我的代码(显示曲线)?
如果通过 spark-submit 提交作业,我们可以在不显式创建的情况下使用 spark 会话对象吗