2011-12-19 65 views
0

我正在開發一個項目,我必須爲存儲在s3中的文件提供用戶下載鏈接。最初我嘗試過,載波+霧(s3)。讓用戶下載文件

link_to "Download", @medium.file.url 

但是這會直接在瀏覽器上打開文件。當我試圖下載mp4文件時,chrome開始自動播放。我不希望這種情況發生。所以我使用由send_file這個任務,

def download 
    @medium = Medium.find(params[:id]) 
    send_file @medium.file.url 
end 

在我的地方,我已經設置爲文件的存儲和我已經測試了這一點,這工作完全正常。但是在分期上,這些文件是從S3服務的,我總是得到ActionController :: MissingFile。我的應用程序託管在heroku上。我也想知道如果使用send_file是不錯的選擇,或者有更好的方法來做到這一點。

config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' 

當我googling,我發現nginx頭設置發送文件應啓用生產。我在config/environments/production.rb中添加了以下行。仍然沒有運氣。我需要一些幫助。謝謝。

回答

0

我想這是因爲S3想要播放文件。

我在這裏沒有訪問我的S3,但我通過在S3控制面板中更改PDF文件的操作(顯示我的情況)來解決問題。

如果你能解決這個問題,我想你可以完全避免使用send_file。

編輯:我現在設法訪問S3。進入屬性 - >元數據,並添加關鍵

Content-Disposition: Attachment 

那麼你的文件將永遠被下載,而不是顯示。

+0

我在哪裏添加內容處置:附件?我找不到性質 - >元數據。 – Cyrus 2012-03-22 06:34:44

+0

這是該文件的屬性。我沒有訪問權限,但點擊存儲桶和文件夾,點擊文件並按屬性(據我所知,有人可能會證實這一點) – 2012-03-26 09:37:42