TYPO3 - Extbase - 检测给定 FileReference 的缺失文件
TYPO3 - Extbase - Detect missing files for a given FileReference
我尝试了三种不同的方法来检测 FileReference
的原始文件是否仍然存在(即文件已在 TYPO3 之外使用 SFTP 或类似方式删除):
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),这应该是必需的。
我尝试了三种不同的方法来检测 FileReference
的原始文件是否仍然存在(即文件已在 TYPO3 之外使用 SFTP 或类似方式删除):
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),这应该是必需的。