2013-07-13 79 views
4

問:軌+ 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的解決方案。

回答

5

解決方案:

這是什麼工程超級好。通過添加fog_attributes方法https://github.com/carrierwaveuploader/carrierwave/blob/5aec4725a94fca2c161e347f02b930844d6be303/lib/carrierwave/uploader/versions.rb(線185)

+1

這隻適用於已簽名的請求。 –

+0

請注意,而不是File.basename(..),您可以使用file_identifier替換 –

+0

此解決方案對我無效。下面的代碼似乎忽略了處置並重定向整個頁面,而不僅僅是下載文件。 '的link_to attachment.file_identifier,attachment.file_url。(:查詢=> { 「內容處置」=> 「附件」})to_s' –

5

可以缺省這一特定上傳的所有文件:使用「響應內容處置」作爲參數傳遞給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 

這適用於未簽名的請求!

+0

它的工作對我來說就像魅力。 Thxs! –