rails version 5.2
我有一个场景,我需要使用亚马逊S3存储访问Rails活动存储的公共URL,以使用Sidekiq后台作业创建zip文件。
我在获取实际文件URL时遇到了困难。我尝试过rails_blob_url
,但它给了我以下提示
http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZUk9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--9598613be650942d1ee4382a44dad679a80d2d3b/sample.pdf
如何通过Sidekiq访问真实文件URL?
storage.yml
test:
service: Disk
root: <%= Rails.root.join("tmp/storage") %>
local:
service: Disk
root: <%= Rails.root.join("storage") %>
development:
service: S3
access_key_id: 'xxxxx'
secret_access_key: 'xxxxx'
region: 'xxxxx'
bucket: 'xxxxx'
development.rb
config.active_storage.service = :development
我可以在web界面上访问这些,但不能在Sidekiq中访问
发布于 2019-09-06 21:16:32
如果你需要公开你所有的文件,那么你必须公开你的上传:
在文件config/storage.yml中
amazon:
service: S3
access_key_id: zzz
secret_access_key: zzz
region: zzz
bucket: zzz
upload:
acl: "public-read"
在代码中
attachment = ActiveStorage::Attachment.find(90)
attachment.blob.service_url # returns large URI
attachment.blob.service_url.sub(/\?.*/, '') # remove query params
它将返回类似如下的内容:"https://foo.s3.amazonaws.com/bar/buz/2yoQMbt4NvY3gXb5x1YcHpRa“
由于上面的配置,它是公共可读的。
发布于 2022-02-24 04:41:25
另请参阅rails活动存储中的public access。这是在Rails 6.1中引入的。
在应用程序的config/storage.yml中指定public: true
。公共服务将始终返回永久URL。
https://stackoverflow.com/questions/49791684
复制相似问题