2011-09-29 25 views
3

我有一個返回csv文件的servlet(java)。所以在我控制我發送POST請求,如何通過Rails中的發佈請求處理csv下載提示

高清handleCsvRequest

響應= RestClient.post theUrlPathTotheServlet queryParams

現在我該怎樣處理響應,以便它提示用戶下載這個csv文件。我知道你可以通過一個表單和隱藏的iframe來做到這一點,但我想通過rails來做到這一點。我正在通過更快的速度,但我沒有找到很好的例子。非常感謝。

我曾嘗試以下:

我曾嘗試以下

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

您是否設法找到解決方案? – Baaju

回答

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 /環境/ production.rb

config.action_dispatch.x_sendfile_header = "X-Sendfile" 

希望這有助於。

+0

我試過以下 ... 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;字符集= ISO-8859-1; header = present',:disposition =>「attachment; filename = frequency-report.csv」 但我沒有得到提示文件下載?有任何想法嗎? – Apples

+0

我從來沒有給出過這麼多的選擇,所以我編輯了我的答案並添加了一些通常應該可以正常工作的示例。 – nathanvda

+0

是的我試過了這些選項以及它仍然無法正常工作。我得到一個狀態200和日誌中的錯誤..我實際上從development.log中的ActionController獲得「Data sent ..」日誌,但仍然沒有提示下載文件。我會繼續調查。謝謝你的幫助。 – Apples