首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Rails主动存储和S3检索附件url

如何使用Rails主动存储和S3检索附件url
EN

Stack Overflow用户
提问于 2018-04-12 16:33:25
回答 2查看 42K关注 0票数 32
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中访问

EN

回答 2

Stack Overflow用户

发布于 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

由于上面的配置,它是公共可读的。

票数 13
EN

Stack Overflow用户

发布于 2022-02-24 04:41:25

另请参阅rails活动存储中的public access。这是在Rails 6.1中引入的。

在应用程序的config/storage.yml中指定public: true。公共服务将始终返回永久URL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49791684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档