gpt4 book ai didi

ruby-on-rails - 在 Ruby on Rails 中,send_file 方法后从服务器删除文件

转载 作者:数据小太阳 更新时间:2023-10-29 06:26:05 26 4
gpt4 key购买 nike

我正在使用以下代码在 Rails 中发送文件。

if File.exist?(file_path)  send_file(file_path, type: 'text/excel')   File.delete(file_path)end

在这里,我尝试发送文件并在成功发送后从服务器中删除文件。但我面临的问题是,在执行发送时删除操作正在执行,因此我在浏览器中看不到任何内容。

那么在 Rails 中有没有什么办法,一旦 send_file 操作完成就从服务器上删除文件。

如有任何帮助,我们将不胜感激。

谢谢,
切坦

最佳答案

因为您正在使用 send_file,Rails 会将请求传递给您的 HTTP 服务器(nginx、apache 等 - See the Rails documentation on send_file regarding X-Sendfile headers)。因此,当您尝试删除该文件时,Rails 不知道它仍在使用中。

您可以尝试使用 send_data 代替,它将阻塞直到发送数据,从而使您的 File.delete 请求成功。请记住,send_data 需要数据流作为其参数,而不是路径,因此您需要先打开文件:

File.open(file_path, 'r') do |f|
send_data f.read, type: "text/excel"
end
File.delete(file_path)

另一个选项是后台作业,定期检查要删除的临时文件。

关于ruby-on-rails - 在 Ruby on Rails 中,send_file 方法后从服务器删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18232088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com