如果file_usage中没有对应的条目,托管文件会被删除吗?


9

我正在使用服务模块来实现REST API。一种资源允许带有上传文件的POST。在服务预处理功能期间,我将文件保存到temp目录。在服务后处理功能期间,我将文件移动到私有目录,调用file_usage_add,并保存主机实体。在保存临时文件和将临时文件移动到永久位置之间发生验证错误时,我不是在明确删除临时文件。我以为drupal cron会替我解决这个问题,因为file_usage中没有该文件的条目。但是,cron似乎并没有为我解决这个问题。有什么想法为什么呢?

查看file_managed时,我会看到要删除的临时文件。查看file_usage时,没有看到任何对应的记录。

更新-另一项信息:在大多数情况下,该文件实际上丢失了。我相信这是由于操作系统重新启动而清除了/ tmp目录。无论如何,如果不再找到实际文件,system_cron仍会删除文件的file_managed条目吗?

自从我开始从本机移动应用程序上传文件以来,就出现了此问题。每次上传时文件名都相同。在某些情况下,临时文件名在/ tmp目录中不存在,但是file_managed中的记录仍然存在,具有该文件名的URI。因此,在保存file_managed表时出现完整性错误。我计划更新该应用程序以创建一个随机文件名。同时,我想清理数据库以及用于管理这些文件的周围“胶水”逻辑。如果system_cron会为我做所有事情,那就太好了。但是据我所知,system_cron并未删除file_managed中的旧的,完全未使用(和未引用)的记录​​。

Answers:


8

Drupal会自动删除system_cron()中的临时文件。

但是,没有file_usage的永久文件不会被删除。


我也那么认为。但是,即使在file_usage中不存在相应的条目,并且不再存在实际的文件,file_managed中的条目仍在徘徊。我一定在这里想念什么……
lkiss80'4

3
@ lkiss80除非表中的文件status为零,否则该文件将不会被删除file_managed
Clive

4
另外,必须早于6个小时。
Berdir

@Clive-谢谢。您的回复促使我仔细检查了状态位。我最初引用的是一本书,错误地误解了这一点。再次感谢!
lkiss80'4
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.