我有一个servlet(java)返回一个csv文件。所以在我的控制器中我发送了一个帖子请求,
def handleCsvRequest
response = RestClient.post theUrlPathTotheServlet queryParams
端
现在我如何处理响应,以便提示用户下载此csv文件。我知道你可以通过表格和隐藏的Iframe来做到这一点,但我想通过rails来做到这一点。我正在通过fastercsv,但我找不到很好的例子。非常感谢。
我尝试了以下内容:
我试过以下
csv_string = RestClient.post url, json, :content_type => :json
csv_file = CSV.generate do |csv|
csv << [csv_string]
end
send_data csv_file, :type => 'text/csv; charset=iso-8859-1; header=present', :disposition => "attachment; filename=report.csv"
但我没有得到文件下载的提示?任何想法?
答案 0 :(得分:1)
使用send_file或send_data将csv数据发送回浏览器。
send_data
的一个典型例子是:
csv_data = CSV.generate do
# block to generate CSV text
end
send_data csv_data, :filename => 'your_data.csv'
send_file
的典型示例是
@csv_filename ="#{RAILS_ROOT}/tmp/your_data.csv"
send_file @csv_filename, :filename => "your_data.csv"
这应该在开发中起作用。如果这在生产中不起作用,并且您正在使用Apache服务器, 你必须在config / environments / production.rb中注释掉以下行
config.action_dispatch.x_sendfile_header = "X-Sendfile"
希望这有帮助。
答案 1 :(得分:1)
看看
1&gt; http://fastercsv.rubyforge.org/ - 文档
2&gt; http://supriya-surve.blogspot.com/2010/02/using-fastercsv-to-import-data.html - 例如。