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