【问题标题】:Getting heroku-app url for images instead of s3.amazonaws in Active storage Rails API在 Active storage Rails API 中获取图像的 heroku-app url 而不是 s3.amazonaws
【发布时间】:2020-09-17 07:00:55
【问题描述】:

我很难理解 rails 中主动存储的图片 url。 我正在使用 amazon s3 存储桶在 storage.yml 文件中通过正确配置上传生产中的图像。

当我运行 url_for(User.user_image) 时,它会生成这个链接:

http://my-heroku-app/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBdVFCIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--1207b8339755bdc5391cb96548181a27dd9565fc/testing_image.jpg

当我运行 User.user_image.service_url 时,生成的链接是

https://my-app.s3.amazonaws.com/ySMyXZUWDnQGexvvNwKjZKpb......

我的图像是否存储在 2 个地方?一个是 Heroku-PostgreSQL,第二个是 aws-s3,或者只是 aws-s3 存储我的图像并且活动存储以某种方式将其绑定到 s3 链接。

实际上,我希望 url_for 中的http://s3.amazonaws.com 在 API 响应中返回它。

应用程序行为:我有 Rails API 应用程序,其中图像/视频首先从前端进入 rails 应用程序,然后从那里推送到 s3 存储桶。

【问题讨论】:

    标签: ruby-on-rails heroku amazon-s3 rails-activestorage rails-api


    【解决方案1】:

    你想要生成 url 的方式实际上是

    rails_blob_url(User.find({id of user}).user_image)
    

    就其工作原理而言,activestorage 仅保存一个指向文件所在位置的指针,并将在必要时重定向到 S3 存储桶。 Heroku 上实际上不可能按照服务的构建方式在本地存储文件,需要某种外部存储容器。

    关于链接部分的 Rails 文档:https://edgeguides.rubyonrails.org/active_storage_overview.html#linking-to-files

    【讨论】:

    • 明白。谢谢
    猜你喜欢
    • 2020-04-30
    • 2020-03-01
    • 2020-09-03
    • 2018-11-19
    • 2019-03-18
    • 1970-01-01
    • 2019-03-29
    • 2013-02-28
    • 2019-11-01
    相关资源
    最近更新 更多