У меня есть файловый сервер, который необходимо удалить после того, как пользователь загрузит его. Я отправляю файл с send_file
, но я не могу просто поставить File.delete(path)
после этой строки, потому что send_file возвращается немедленно, поэтому файл удаляется еще до того, как пользователь получит полный файл.
Как я могу это исправить? Я думаю, что это распространенная проблема, но пока не нашел решения.
Вот мой код ниже:
def export_rawdata
@device = Device.find_by_id( params[:id] )
@messages = @device.devmessages.all( :order => "id", :conditions => ["packettime >= ? and packettime <= ?", params[:start_time], params[:end_time]] )
raw_data_path = "#{Rails.root}/tmp/exports/#{@device.s_dev_name}.csv"
FasterCSV.open(raw_data_path, "w+") do |csv|
csv << ["Packet","Created At"]
@messages.each_with_index do |m,i|
x = m.created_at
csv << [m.message, x.strftime('%h %d, %G %r')]
end
end
send_file raw_data_path, :type => "text/csv", :x_sendfile => true, :streaming => false
end
Может ли кто-нибудь предложить мне, как удалить файл с сервера после завершения загрузки на стороне клиента?