我正在使用Ruby AWS SDK生成Presigned Post对象,以允许用户将图像直接上传到S3(您知道,标准工作流程)。这是我如何生成预先签名的帖子对象:
CONVERT(VARCHAR(10), CONVERT(DATE, CONVERT(char(8), DateOfBought )), 104)
def s3_presigned_post
S3_BUCKET.presigned_post(
key: aws_key,
content_type_starts_with: 'image/',
success_action_status: '201',
acl: 'public-read')
end
部分直接从AWS documentation(cmd-f“Field Starts With”)中拉出。
当我尝试使用此对象返回的字段随后上传图像时,我收到以下响应:
content_type_starts_with: 'image/'
如果删除<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AccessDenied</Code>
<Message>Invalid according to Policy: Policy Condition failed: ["starts-with", "$Content-Type", "image"]</Message>
<RequestId>[redacted]</RequestId>
<HostId>[redacted]</HostId>
</Error>
约束,则上传成功。在Paw中,我确认图片确实上传的内容类型为content_type_starts_with
:
同样,制作网络表单并提交它也会给出我同样的答案:
image/jpeg
如果有人知道我做错了什么,那就太好了!