【发布时间】:2012-11-01 09:35:15
【问题描述】:
我正在使用 send_file 从我的 Rails 控制器发送文件 file.txt,然后删除包含它的文件夹。
send_file("#{Rails.root}/public/folder/file.txt")
FileUtils.remove_dir "#{Rails.root}/public/folder", true
当我这样做时,file.txt 被发送并删除。但是,folder 没有被删除。但是如果我删除send_file 行,那么folder 将被删除。
如何让它删除folder?
编辑:有趣的是,我发现在folder 内部有一个名为.__afs2B0C 的隐藏文件,可能会阻止删除。我不知道这个文件是如何创建的!该文件在消失之前仅保留大约 15 分钟。
EDIT2:我尝试使用vi 检查临时文件的内容,但这是不可读的乱码。当我仅删除 send_file 行时,该文件夹已正确删除。当我仅删除 FileUtils.remove_dir 行时,该文件夹不包含临时文件。
【问题讨论】:
-
如果您没有真正的理由使用此设置(例如,您希望文件夹保持错误状态),您可以考虑改用
TempFile:这些文件在请求后会自动清除。 -
@nathanvda 感谢您的回答,但我不太明白。我应该在我的代码中具体在哪里使用
Tempfile? -
我假设您正在创建文件,因为您删除了它们。也许这是一个错误的假设。
-
@nathanvda 我明白了。我使用
wget下载了一些文件然后压缩它们,所以使用Tempfile可能太复杂了。 -
恕我直言,这非常适合使用
TempFile,但压缩一个完整的文件夹可能更容易。