Django的Heroku的媒体文件404错误与Amazon S3的(django heroku m

2019-10-18 14:12发布

所以,我跟了这问题, 如何建立与Django的储存和Amazon S3一个Django项目,但对静态文件和媒体文件不同的文件夹? 为了得到我的Django应用程序上传媒体文件到我的Amazon S3的桶。 我使用的Django奥斯卡的方式。 一切似乎都做工精细的权利我上传的图片后,但是当我重新加载页面,图像消失,我得到一个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是不正确的。 我生成一个新的URL为你的形象之一,手动测试它。 新的图像位于: http://s3.amazonaws.com/comprasonline-brazil/media/cache/bc/f5/bcf55748e916eb1979eab9e2713fa97f.jpg?AWSAccessKeyId=AKIAJVPBLRLYHX6EQKUA&Expires=1379587008&Signature=QiU8OvknWHoK7R9YsM%2FG8V%2F4v8s%3D注意格式是有点不同的,并且它具有“/媒体/在/高速缓存的前/ B5 / F5等我然后能够观看该图像,按照这个截图。 您可能需要重新生成一个新的URL,因为这一个可能已经被你得到这个时间过期。 它看起来像Django是不产生这些上传资产的正确网址。 我用来生成新的URL页面就设在这里。 你知不知道这可能影响该任何设置? 这是一个有点超出我们的范围,我没能找到这把“/缓存/”目录中的任何Django的奥斯卡设置。 干杯,里斯

这个我一个Django的奥斯卡问题? 如果是有人知道我怎么能解决这个问题?

Answer 1:

看来,你的文件是私人,正在生成一个签名来访问它们。 默认情况下,上传到S3文件设置为私人。 你必须将你的文件明确设置为公开。

S3是不是,你最好使用CloudFront的与您的S3存储为原点,从直接提供文件服务的最大的选项。



文章来源: django heroku media files 404 error with amazon s3