【发布时间】:2019-09-18 18:29:08
【问题描述】:
在我的应用程序中,我将所有用户的图像保存在 Amazon S3 上。 我正在实现一个用于将图像上传到 S3 的 Web 界面。
在我的 nodejs 后端,我正在创建预签名的发布请求:
const presignedPostParams = ({ userId }) => ({
Bucket: bucket,
Conditions: [
['starts-with', '$key', `user/${userId}/`],
],
Expires: 60 * 5,
});
const request = await createPresignedPost(presignedPostParams({ userId }));
在我的前端,我正在向 S3 发送带有预签名参数的表单。
有效。
但现在我可以上传任何文件,而不仅仅是图片。我想限制上传的文件类型(mimetypes)?当然,我可以通过前面的javascript代码来限制它。靠它是不可靠的。
我可以在创建预签名 url 时限制文件 mimetype 吗?
第二个问题:我可以从预签名的网址管理上传文件的权限吗?我想从一个界面上传一些公共文件和一些私人文件(也许我可以通过预签名的 url 实现这一点?)
【问题讨论】:
-
我发现了一些包含条件
["starts-with", "$Content-Type", ""]的类似代码,所以我怀疑您可以在其中插入特定的内容类型。 -
谢谢。我正在通过 axios 向 S3 发送发布请求。内容类型始终是“应用程序/json”(因为我正在发送表单,其中只有一个字段是文件)
标签: javascript node.js amazon-s3 pre-signed-url file-storage