1

我想将图像上传到 s3。为此,我正在关注http://railscasts.com/episodes/383-uploading-to-amazon-s3

我可以将单个图像上传到 s3,但现在我正在使用 jquery 文件上传来上传多个文件。

当我尝试上传文件时,它给了我 403(禁止)。

我需要做什么来修复它?

感谢任何可以提前提供帮助的人!

4

3 回答 3

0

在测试时,您可以使用非常广泛的 CORS 配置

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>
于 2013-07-26T11:35:37.907 回答
0

您需要检查您的 S3 存储桶的权限。它应该允许“上传/删除”。

此外,您应该设置 CORS 配置(CORS:跨域资源共享)(对于您的存储桶,转到 Properties ==> Permissions,然后单击“Add CORS Configuration”)

该文件应该是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>http://localhost:3000</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

在这里,它允许我的本地主机将文件发布到此存储桶。

于 2013-01-08T19:39:43.603 回答
0

除了 CORS,可能会出现 403,因为设置了错误的 contentType。

服务器端:

GeneratePresignedUrlRequest rq = new GeneratePresignedUrlRequest(bucketName, objectKey);
rq.setContentType("video/*");
...

客户端:

$.ajax({
                url:upUrl,
                type: "PUT",
                data: file,
                contentType:'video/*',
                cache: false,
                processData:false,
                success: function (data) {

                }
              });
于 2017-10-06T14:47:02.227 回答