将 link(无重定向)指向 ActiveStorage 中的文件

Direct link (no redirect) to files in ActiveStorage

对存储在活动存储中的文件使用 url_for() returns a url 导致应用程序,然后重定向到实际位置。由于 bug in firefox 具有 CORS,重定向中断了我的应用程序。

有什么方法可以直接 link 使用 ActiveStorage 获取文件吗?

我必须深入研究 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
)

你可以做到

record.active_storage_object.blob.service_url

在此处找到 https://github.com/rails/rails/blob/master/activestorage/app/controllers/active_storage/blobs_controller.rb

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