TYPO3 - Extbase - 检测给定FileReference的丢失文件

问题描述 投票:0回答:1

我尝试了三种不同的方法来检测FileReference的原始文件是否仍然存在(即使用SFTP或类似文件已经在TYPO3外删除了文件):

if($fileReference instanceof \TYPO3\CMS\Extbase\Domain\Model\FileReference) {
    $isMissing = $fileReference->getOriginalResource()->getStorage()->getFile($fileReference->getOriginalResource()->getIdentifier())->isMissing();
    $isMissing = $fileReference->getOriginalResource()->getOriginalFile()->isMissing();
    $isMissing = $fileReference->getOriginalResource()->isMissing();
}

只有第一个给我正确的isMissing()值。

typo3 extbase filereference
1个回答
2
投票

属性isMissing是一个数据库值,如果存储检测到丢失的文件,则设置该值。在getFile上,存储检查文件是否丢失,并为文件设置“isMissing”。如果您不将此持久保存到数据库,则下次调用时设置将松散。

你也可以打电话给$isMissing = $fileReference->getOriginalResource()->getStorage()->hasFile($fileReference->getOriginalResource()->getIdentifier());

如果要经常检查已删除的文件,可以运行文件索引器调度程序(TYPO3\CMS\Scheduler\Task\FileStorageIndexingTask)。如果您允许外部更改文件(如ftp),则应该这是必需的。

© www.soinside.com 2019 - 2024. All rights reserved.