【发布时间】:2016-12-11 23:17:40
【问题描述】:
我正在向客户端应用程序发送一个由我的服务器使用 S3 SDK 生成的预签名 URL。我无法首先决定该 URL 是用于上传 MP4 视频还是 JPG 图像(因此在预签名的 URL 中没有设置 Content-Type)。
稍后我需要在客户端(NodeJS - React Native)上下载该文件。
有没有办法确定 S3 对象的文件格式(不基于文件名),然后能够使用正确的标签(在这种情况下,<img> 或 <video>)查看它?
非常感谢
编辑:我一直在想,也许客户端可以在上传时自行设置内容类型?我不确定我是否会被 S3 拒绝访问,因为 Content-Type 不会在预签名的 URL 中定义。这样我可以在下载时知道数据类型。那行得通吗? (明天试试)
【问题讨论】:
-
也许您可以向客户端发送两个预签名的 URL,一个用于 MP4,一个用于 JPG,并让客户端使用与内容类型相关的 URL?
-
为了安全起见,我希望给客户尽可能少的选择。此外,它对 AWS API 的调用次数是其两倍,但不确定限制和计费
-
生成签名 URL 是一项本地操作——它不涉及对 AWS API 的任何调用。签名 URL 生成是在运行创建签名 URL 的代码的机器上完成的。
-
我的错;这实际上是有道理的。我仍然不喜欢给用户 2 个 url 的想法,以防他使用坏的那个做一些黑客攻击。
标签: node.js http amazon-web-services amazon-s3 react-native