加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Rails中的send_file之后删除文件夹

发布时间:2020-12-17 03:39:06 所属栏目:百科 来源:网络整理
导读:我使用send_file从我的Rails控制器发送文件file.txt,然后删除包含它的文件夹. send_file("#{Rails.root}/public/folder/file.txt")FileUtils.remove_dir "#{Rails.root}/public/folder",true 当我这样做时,file.txt被发送和删除.但是,文件夹未被删除.但是如
我使用send_file从我的Rails控制器发送文件file.txt,然后删除包含它的文件夹.

send_file("#{Rails.root}/public/folder/file.txt")
FileUtils.remove_dir "#{Rails.root}/public/folder",true

当我这样做时,file.txt被发送和删除.但是,文件夹未被删除.但是如果我删除send_file行,那么文件夹将被删除.

如何删除文件夹?

编辑:有趣的是,我发现内部文件夹中有一个名为.__ afs2B0C的隐藏文件,可能会阻止删除.我不知道这个文件是如何创建的!该文件仅在大约15分钟后才会消失.

编辑2:我已经尝试用vi检查临时文件的内容,但这是不可读的乱码.当我只删除send_file行时,文件夹被正确删除.当我只删除FileUtils.remove_dir行时,该文件夹不包含临时文件.

解决方法

你确定send_file在删除目录时仍然没有发送文件,如果使用X-SendFile,它可能是异步的吗?这会在尝试删除目录时导致错误.

因此,您应该将此删除操作排队,或者稍后使用清扫程序进行排队,而不是在将文件发送到流后直接执行此操作.

我不完全清楚您要发送的文件,因此包含文件路径的实际示例,文件类型以及如何在您的问题中创建它是有用的.

可能的调试帮助:

执行以下操作时登录并监视该文件夹:

>写出一个非常大的文件(大约60MB),并检查在文件创建过程中是否创建了不可见的文件 – 我不清楚你实际发送的是哪个文件
>在慢速连接上设置大型文件传输,并监视此文件的创建和可能增长(例如,它可能与压缩文件中的文件有关).

鉴于sendfile可能仍在通过Web服务器发送(对于大文件)(x-send-file现在是默认值),当您尝试删除时,我会尝试查看延迟解决方案.

可能的解决方案:

>使用send_data而不是send_file(如果文件很小)>安排删除文件夹以便稍后使用delayed_job>设置扫地机,在每天结束时删除文件夹

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读