直接链接(无重定向)到ActiveStorage中的文件

时间:2018-08-07 07:13:33

标签: ruby-on-rails ruby rails-activestorage

在活动存储中存储的文件上使用@Autowired会返回一个指向应用程序的URL,然后将其重定向到实际位置。由于bug in firefox包含CORS,因此重定向会中断我的应用程序。

是否可以通过ActiveStorage直接链接到文件?

3 个答案:

答案 0 :(得分:5)

您可以做到

record.active_storage_object.blob.service_url

在这里https://github.com/rails/rails/blob/master/activestorage/app/controllers/active_storage/blobs_controller.rb

答案 1 :(得分:1)

我必须深入研究Rails源来创建它,所以我不知道它的建议如何,但这至少对磁盘存储有效。

ActiveStorage::Current.host = "yourhostname"
attachment_blob = ActiveStorage::Attachment.find_by(record_type: "YourModel", record_id: record.id).blob
direct_url = ActiveStorage::Blob.service.url(
    attachment_blob.key,
    expires_in: 20000,
    disposition: "attachment",
    filename: attachment_blob.filename,
    content_type: attachment_blob.content_type
)

答案 2 :(得分:0)

对我来说,rails_blob_url(@blog.pdf)(如果您尝试将文件存储为@blog.pdf)效果最好。