ruby-on-rails – 在Rails中的send_file之后删除文件夹
我使用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>设置扫地机,在每天结束时删除文件夹 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |