【问题标题】:Linking to An Uploaded File in Django with Amazon S3使用 Amazon S3 链接到 Django 中上传的文件
【发布时间】:2012-08-17 13:27:56
【问题描述】:

我正在使用 django-storages 后端,而我之前没有使用过 Amazon S3。我已通过 Firefox 的 S3 管理器上传文件迁移到 Amazon S3。

问题是,使用以下代码:

<a href="{{ MEDIA_URL }}{{ g.photo }}" class="lightbox" title="{{ g.description }}">
    {%  thumbnail g.photo '95x95' crop="center" as im %}
        <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" />
    {% endthumbnail %}
</a>

生成的请求不包括 GET 请求中所需的参数,如签名。但是,sorl 生成的缩略图可以工作!

关于在 S3 中上传我的文件,我有什么遗漏吗?是否需要在 href 中添加其他代码?为什么 sorl 能够检索文件并从中创建缩略图?

【问题讨论】:

  • 缺少一些信息:您的 S3 存储桶中的文件是私有的吗?如果没有,则不需要签名。您的 MEDIA_URL 设置为什么?
  • 我不认为他们是。因为 sorl 正确显示了它们。但是指向原始图像(未调整大小)的链接不起作用。
  • 好吧,你能显示你的 MEDIA_URL 设置吗?请显示 {{ im.url }} 在您的 html 代码中显示的内容。
  • im.url (img src attr) = s3.amazonaws.com:80/dragonflysco/… MEDIA_URL = '//s3.amazonaws.com/%s/' % AWS_STORAGE_BUCKET_NAME
  • 您的“g.photo”似乎不包含正确的文件名。 的输出是什么?

标签: django amazon-s3 sorl-thumbnail django-storage


【解决方案1】:

该文件不可公开访问。这可能发生在上传或由于存储桶限制。

您可以在 S3 管理器中将此文件的 ACL 设置更改为公开访问(如果只有此文件应该是公开可读的),或者为存储桶上的细粒度权限创建存储桶策略 - 您可以在AWS 控制台。

如果存储桶中的任何文件是公开的,您应该相应地更改 S3 客户端中的默认 ACL 设置。

【讨论】:

  • 谢谢!我只需要公开文件或目录!
猜你喜欢
  • 2010-10-14
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
  • 2015-03-17
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多