如何将通过ftp上传的文件添加到fal中

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

在调度程序操作中,我需要将文件添加到 FAL(到 sys_file),这些文件已经在存储中,通过 ftp 上传。正常方式

storage->addFile(....) 

将文件从临时文件夹复制到文件存储并将其添加到 sys_file 表中不起作用,因为该文件已经在 fileadmin 目录中。如果我尝试,我会收到此错误消息:

[错误] 无法添加已属于此存储的文件。

如何将文件添加到 fileadmin 中已有的 sys_file 中?

谢谢!

typo3
2个回答
0
投票

AFAIK

addFile()
用于从本地磁盘上传的文件。如果文件已在远程服务器上可用,您应该改为使用
addUploadedFile()


0
投票

这不是最新的问题,但在我自己努力解决这个问题之后,我认为这对其他人也可能有帮助。

如果您知道文件的文件夹(在存储中)和名称,您可以执行以下操作:

$folder = $storage->getFolder('/my-dir/');
$file = $storage->getFileInFolder('my-file.txt', $folder);

如果不存在

sys_file
记录,则会通过这样做来创建它。没什么可做的。

如果物理文件之前存在,但已更新(例如通过 FTP 上传),则仅获取文件不会更新

sys_file
记录(时间戳、大小等)。 在这种情况下,您可以使用返回的 File 对象来简单地更新索引:

use TYPO3\CMS\Core\Resource\Index\Indexer;
$indexer = GeneralUtility::makeInstance(Indexer::class, $storage);
$indexer->updateIndexEntry($file);

就我而言,我只需比较文件系统上文件的lastmod时间和

sys_file
记录来找出是否需要更新索引:

if ( $file->getCreationTime() != filemtime($fileWithFullPath) ) {
    // update index
}
© www.soinside.com 2019 - 2024. All rights reserved.