将 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
对我来说,rails_blob_url(@blog.pdf)
(如果您尝试将文件存储为 @blog.pdf
)效果最好。
对存储在活动存储中的文件使用 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
对我来说,rails_blob_url(@blog.pdf)
(如果您尝试将文件存储为 @blog.pdf
)效果最好。