所以我已经关注了这个问题How to set-up a Django project with django-storages and Amazon S3, but with different folders for static files and media files?,以便让我的django应用程序将媒体文件上传到我的亚马逊S3存储桶中。顺便说一下,我正在使用django-oscar。 我上传图像后,一切似乎工作正常,但当我重新加载页面时,图像消失,我得到404错误。 我的静态文件工作正常..我没有发现任何问题。
更新:
我已将我的存储桶政策更改为公开,但仍然无法将图像加载到我的缩略图上:
{
"Version":"2008-10-17",
"Statement":[{
"Sid":"AllowPublicRead",
"Effect":"Allow",
"Principal": {
"AWS": "*"
},
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::bucket/*"
]
}
]
}
有什么想法吗?如果我点击链接我可以看到图像,但从缩略图它不加载并给我404
当我尝试访问404链接时,我得到了
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>cache/7b/4d/7b4d647e0faa51cb4226f13b780ba320.jpg</Key>
<RequestId>4BF12C367D0C65D1</RequestId>
<HostId>
b7c4LraxQtVGMe3bE+hAPOSBo9nrHE8DiyLbsBchfmdAul8F0Uw0+pKkO+PM6z/i
</HostId>
</Error>
更新: 我问过heroku的人,这就是他们给我的答案:
嗨,看看它看起来像是Django的URL 生成不正确。我为您的某个图片生成了一个新网址 手动测试它。新图片位于此处: http://s3.amazonaws.com/comprasonline-brazil/media/cache/bc/f5/bcf55748e916eb1979eab9e2713fa97f.jpg?AWSAccessKeyId=AKIAJVPBLRLYHX6EQKUA&Expires=1379587008&Signature=QiU8OvknWHoK7R9YsM%2FG8V%2F4v8s%3D 请注意,格式有点不同,它有'/ media / in 前面的/ cache / b5 / f5等我随后能够查看图像,如 根据此截图。您可能需要重新生成一个新URL 你得到这个可能会到期。看起来像 Django没有为这些上传的资产生成正确的URL。该 我用来生成新网址的页面位于此处。你是 知道任何可能影响这个的设置?这是一点点 超出我们的范围,我无法找到任何django-oscar设置 设置'/ cache /'目录。干杯,里斯
我这是一个django-oscar问题?如果有人知道我该如何解决这个问题?
答案 0 :(得分:0)
您的文件似乎是私有的,并且正在生成签名以访问它们。默认情况下,上传到s3的文件设置为私有。您必须将文件明确设置为公开。
S3不是直接提供文件的最佳选择,您最好使用以s3存储桶为原点的cloudfront。