ruby-on-rails - 在 Active storage Rails API 中获取图像的 heroku-app url 而不是 s3.amazonaws
问题描述
我很难理解 rails 中活动存储的图像 url。我正在使用 amazon s3 存储桶在 storage.yml 文件中通过正确配置上传生产中的图像。
当我运行url_for(User.user_image)时,它会生成此链接:
当我运行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 存储桶。
解决方案
您想要生成网址的方式实际上是
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
推荐阅读
- java - 是否可以同时滚动列表视图和图像?
- csv - libreoffice calc 查找:如果日期在两个日期之间,则返回值
- r - 使用函数在 R 中重新编码变量
- android - Android LocationListener 位置看起来像“50.********, 9.********”
- dart - 如何在飞镖中解码令牌
- mongodb - $[](位置运算符)在猫鼬中不起作用
- apache-spark - spark主代码中的log4j
- python-3.x - 在 Python 中从 URL 下载文件
- c# - 如何在 dataTemplate 中为 WPF 工具包自动完成框设置项目源
- sql - 从表一中的每条记录中查找表二中日期最近的记录