我是第一次使用 ActiveStorage。
在开发中一切正常,但在生产(Heroku)中我的图像无缘无故地消失了。
第一次显示正常,但现在没有显示图像。在控制台中我可以看到这个错误:
GET https://XXX.s3.amazonaws.com/variants/Q7MZrLyoKKmQFFwMMw9tQhPW/XXX 403 (Forbidden)
如果我尝试直接访问该 URL,我会得到一个 XML
<Error>
<Code>AccessDenied</Code>
<Message>Request has expired</Message>
<X-Amz-Expires>300</X-Amz-Expires>
<Expires>2018-07-24T13:48:25Z</Expires>
<ServerTime>2018-07-24T15:25:37Z</ServerTime>
<RequestId>291D41FAC6708334</RequestId>
<HostId>lEVGuwA6Hvlm/i40PeXaje9SEBYks9+uk6DvBs=</HostId>
</Error>
这就是我所看到的
<div class="cover" style="background-image: url('<%= rails_representation_path(experience.thumbnail) %>')"></div>
这就是我在模型中的内容
def thumbnail
self.cover.variant(resize: "300x300").processed
end
简而言之,我不希望图像过期,而是希望图像始终存在。
Thanks
ActiveStorage 不支持非过期链接。它使用过期链接(私有),并支持仅在您的服务上上传私有文件。
这对我来说也是一个问题,并且做了2patches(注意)仅适用于 S3,一个简单的〜30行 https://github.com/rails/rails/issues/31419#issuecomment-370900013覆盖 ActiveStorage 仅适用于未过期(公共)链接,以及另一个向 has_one_attached 和 has_many_attached 方法添加 acl 选项 https://gist.github.com/dinatih/dbfdfd4e84faac4037448a06c9fdc016.
希望能帮助到你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)