我有一个管理平台的插件。 我在/ tmp下的临时文件,然后我File.open发送。 我想删除临时文件,当用户下载。 我能怎么做 ?
我的代码(在控制器):
File.open(filelocation, 'r') do |file|
send_file file, :filename => filename, :type => "application/pdf", :disposition => "attachment"
end
如果我删除File.open后的文件,这是行不通的。
编辑
在我的控制器我做的:
def something
temp = Tempfile.new(['PDF_','.pdf'])
# ... some code that modify my pdf ...
begin
File.open(temp.path, 'r') do |file|
send_file file, :filename => temp.path, :type => "application/pdf", :disposition => "attachment"
end
ensure
temp.close
temp.unlink
end
end
我的临时文件删除,但不是在我的代码的末尾:在File.open返回损坏PDF。