我想知道是否有人知道如何在创建文件的同时流式传输文件下载。
我正在生成一个巨大的 CSV 导出文件,截至目前,创建文件需要几分钟时间。一旦它创建浏览器然后下载文件。
我想更改它,以便浏览器在创建文件时开始下载文件。看着这个进度条用户会更愿意等待。尽管它会告诉我“剩余时间未知”,但我不太可能不耐烦,因为我知道数据正在稳步下载。
注意:我使用的是 Rails 版本 3.0.9
这是我的代码:
def users_export
File.new("users_export.csv", "w") # creates new file to write to
@todays_date = Time.now.strftime("%m-%d-%Y")
@outfile = @todays_date + ".csv"
@users = User.select('id, login, email, last_login, created_at, updated_at')
FasterCSV.open("users_export.csv", "w+") do |csv|
csv << [ @todays_date ]
csv << [ "id","login","email","last_login", "created_at", "updated_at" ]
@users.find_each(:batch_size => 100 ) do |u|
csv << [ u.id, u.login, u.email, u.last_login, u.created_at, u.updated_at ]
end
end
send_file "users_export.csv",
:type => 'text/csv; charset=iso-8859-1; header=present',
:disposition => "attachment; filename=#{@outfile}",
:stream => true,
end