在rails中呈现MIME类型的文件

时间:2008-11-18 20:20:31

标签: ruby-on-rails ruby render mime-types

以下是代码:

render :file => @somedir + "/blah.xml"

...但是当我签入FireBug时,生成的MIME类型是text / html。在这种情况下如何指定MIME类型?

5 个答案:

答案 0 :(得分:34)

实际上有两种方法可以设置内容类型(我认为这就是你所说的mime-type)。如果它适用于您的Rails版本,则应使用第二个选项。

class FileController < ApplicationController

  def index
    filename = 'some.xml'

    extname = File.extname(filename)[1..-1]
    mime_type = Mime::Type.lookup_by_extension(extname)
    content_type = mime_type.to_s unless mime_type.nil?

    # 1
    #headers['Content-Type'] = content_type
    #render :file => filename

    # 2
    render :file => filename, :content_type => content_type
  end

end

希望这有帮助!

答案 1 :(得分:16)

render :file => @somedir + "/blah.xml", :content_type => Mime::XML

答案 2 :(得分:3)

怎么样?
headers["Content-Type"] = "text/xml"

?希望有所帮助。

答案 3 :(得分:2)

看看here。基本上你需要使用render:xml =&gt; blah.to_xml

答案 4 :(得分:0)

每个http://api.rubyonrails.org/classes/Mime/Type.html都可以这样指定:

render file: @somedir + "/blah.xml", mime_type: Mime::Type.lookup("text/xml")