从rails返回文件
初学者问题: 如何从rails中的控制器返回文件?
我熟悉返回/渲染JSON对象。 但是我从来没有返回/渲染过具有任意扩展名的文件。
从阅读SO来看,它听起来像render :nothing => true
可以帮助。 我只是在寻找一些指导或相关文档。
您可以使用内置的rails send_file或send_data方法。
要流式传输文件(例如,为文件代理端点),请使用send_file:
send_file("#{RAILS_ROOT}/path/to/file/on/server", :filename => "client-suggested-filename", :type => "mime/type")
要流生成的数据(例如,生成的pdf),请使用send_data:
send_data(your_data, :filename => "client-suggested-filename", :type => "mime/type")
文件扩展名和mime类型不必匹配,但它们可能只是为了符合最终用户的期望。 例如,如果您使用mime类型的application/pdf
发送,则应该将:filename
设置为something.pdf
。
如果您不确定要发送的文件的mime类型是什么,您可以查看此维基百科页面或使用mime-types gem。 (或者如果您正在从存储mime类型的数据库中读取,请使用它)。