我正在使用服务模块来实现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中的旧的,完全未使用(和未引用)的记录。