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