2010-07-26 41 views
1

我正在運行Rails 2.2.3。我有一個控制器用於管理上傳和下載文件。我已成功鏈接到視圖上的文件以允許用戶下載,但是當下載對話框打開時,它僅顯示「保存文件」選項。我希望有「打開方式」選項。我使用的是Firefox 3.6在Ubuntu 10Rails:使用「Open With」選項下載文件

這是用於文件「送」給用戶的控制器:

def show

@document = Document.find(params[:id]) 

    respond_to do |format| 
    if File.exist?("#{RAILS_ROOT}/#{@document.path}") 
     format.html { send_file "#{RAILS_ROOT}/#{@document.path}" } 
    else 
     flash[:error] = "File #{@document.path} does not exist!" 
     format.html { redirect_to(:back) } 
    end 
    end 

end

回答

2

您應該設置正確的MIME類型(和延伸)允許Firefox識別正在下載的文件類型:

send_file "#{RAILS_ROOT}/#{@document.path}", :type => "application/pdf", 
    :filename => "document.pdf" 

當文件上傳時,您可以讀取和存儲此信息。

uploaded_file.content_type # the uploaded file's MIME type 
uploaded_file.original_path # name of the file 

即使這樣,如果MIME類型是未知的,我不認爲你會得到一個公開賽提示。所以最終這也將取決於您在應用程序中使用的特定類型的文件。

+0

是不是有辦法註冊MIME類型?然後,我可以註冊所有我正在處理的不同文件,以便所有文件都具有open選項嗎? – Audie 2010-07-27 15:16:50

+0

沒關係我得到了Mime類型註冊的東西的工作 - 現在它適用於我所有的晦澀的文件類型! :d – Audie 2010-07-27 17:28:01