【发布时间】:2012-01-21 18:09:01
【问题描述】:
我有一个文件服务器,用户下载后必须删除它。我使用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
任何人都可以建议我,一旦在客户端完成下载,如何从服务器中删除文件?
【问题讨论】: