問:軌+ carrierwave S3:力的link_to下載
我想強迫的link_to下載從S3獲取在瀏覽器窗口中打開它們,而不是圖像和PDF文件。
link_to File.basename(asset.attachment.path), asset.attachment_url.to_s
我尋找解決方案,但我發現,僅僅是處理它的控制器使用由send_file或SEND_DATA但這些並沒有爲我工作。最後,我偶然發現了Carrierwave的解決方案。
問:軌+ carrierwave S3:力的link_to下載
我想強迫的link_to下載從S3獲取在瀏覽器窗口中打開它們,而不是圖像和PDF文件。
link_to File.basename(asset.attachment.path), asset.attachment_url.to_s
我尋找解決方案,但我發現,僅僅是處理它的控制器使用由send_file或SEND_DATA但這些並沒有爲我工作。最後,我偶然發現了Carrierwave的解決方案。
解決方案:
這是什麼工程超級好。通過添加fog_attributes方法https://github.com/carrierwaveuploader/carrierwave/blob/5aec4725a94fca2c161e347f02b930844d6be303/lib/carrierwave/uploader/versions.rb(線185)
可以缺省這一特定上傳的所有文件:使用「響應內容處置」作爲參數傳遞給URL
link_to File.basename(asset.attachment.path), asset.attachment_url(:query => {"response-content-disposition" => "attachment"}).to_s
在這裏找到更多的選擇。
例如
# your_uploader.rb
def fog_attributes
{'Content-Disposition' => "attachment"}
end
這適用於未簽名的請求!
它的工作對我來說就像魅力。 Thxs! –
這隻適用於已簽名的請求。 –
請注意,而不是File.basename(..),您可以使用file_identifier替換 –
此解決方案對我無效。下面的代碼似乎忽略了處置並重定向整個頁面,而不僅僅是下載文件。 '的link_to attachment.file_identifier,attachment.file_url。(:查詢=> { 「內容處置」=> 「附件」})to_s' –