Rails:使用“打开方式”选项下载文件

时间:2010-07-26 21:43:11

标签: ruby-on-rails ruby

我正在运行Rails 2.2.3。我有一个控制器,我用来管理上传和下载文件。我已成功链接到视图上的文件以允许用户下载,但是当下载对话框打开时,它只显示“保存文件”选项。我也希望有“打开方式”选项。我在Ubuntu 10上使用Firefox 3.6。

这是用于将文件“发送”给用户的控制器:

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

@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

1 个答案:

答案 0 :(得分: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类型未知,我认为你不会得到打开提示符。因此,最终这还取决于您在应用程序中使用的特定类型的文件。