我無法找到通過 Shrine 中的default_url插件為公共靜態資產生成 S3 URL 的正確方法。資產是用戶頭像,可以是nil,所以想法是使用插件 default_url來獲取空頭像影像。按照我已經到達的檔案:
class AvatarUploader < Shrine
plugin :default_url
Attacher.default_url do |options|
'/user_avatar.png'
end
end
但這會生成一個相對 URL。我也嘗試過使用此處:host指出的選項。但它只有在我硬編碼完整的端點 URL 時才有效,這不好。
plugin :default_url, host: "https://my-public-bucket.s3.amazonaws.com"
attacher.url #=> "https://my-public-bucket.s3.amazonaws.com/user_avatar.png"
其他選項是在環境變數中設定存盤桶名稱:
plugin :default_url, host: "https://#{ENV["S3BUCKET_PUBLIC"]}.s3.amazonaws.com"
但我認為也不好。
有沒有辦法使用現有的配置直接從 Shrine 以編程方式創建完整的 URL?
uj5u.com熱心網友回復:
要以編程方式創建我需要使用選項哈希呼叫Shrine#uploaded_file的 URL:
class AvatarUploader < Shrine
plugin :default_url
Attacher.default_url do |options|
data = { "id" => "user_avatar.png", "storage" => :bucket_name_from_config }
shrine_class.uploaded_file(data).url
end
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/497641.html
下一篇:AWSS3下載定價
