我正在使用S3 SDK将我的服务器生成的预签名URL发送到客户端应用。我不能首先决定是否使用URL来上传MP4视频或JPG图像(因此预先签名的URL中没有设置Content-Type)。
我稍后需要在客户端上下载该文件(NodeJS - React Native)。
有没有办法确定S3对象的文件格式(不基于文件名),然后能够使用正确的标签查看它(在这种情况下,<img>
或{{1 }})?
非常感谢
编辑:我一直以为客户可以在上传时自行设置内容类型?我不确定是否会被S3拒绝访问,因为Content-Type不会在预先签名的URL中定义。这样我下载时就可以知道数据类型。那会有用吗? (明天会尝试)
答案 0 :(得分:0)
我建议在PUT上设置内容类型。但是,使用签名URL时,您可以覆盖内容类型和内容处置。
示例:
https://my.examplesite.com/some/path/file.jpg?response-content-type=image/jpeg&response-content-disposition=attachment;%20filename="coolcat.jpg"
重要说明:“Content-type”应位于“Content-Disposition”之前,例如上例中。此外,这些查询字符串值不包含在签名生成中,它们会在生成签名后添加到URL中。