在Active storage Rails API中获取图像的heroku-app url而不是s3.amazonaws

问题描述 投票:0回答:1

我很难理解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个回答
0
投票

您实际上想要生成URL的方式是

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.