繁体   English   中英

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

[英]TYPO3 - Extbase - Detect missing files for a given FileReference

我尝试了三种不同的方法来检测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()值。

isMissing属性是一个数据库值,如果存储设备检测到丢失的文件,则会设置该值。 getFile的存储上,检查文件是否丢失,然后为文件设置“ isMissing”。 如果您不将其保留到数据库中,则在下一次调用时该设置将变得松散。

您还可以调用$isMissing = $fileReference->getOriginalResource()->getStorage()->hasFile($fileReference->getOriginalResource()->getIdentifier());

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM