在 TYPO3 Extbase 中创建 FAL 对象时如何设置 sys_file_metadata

问题描述

我正在寻找将元数据添加到 TYPO3 Extbase 中的 sys_file 文件对象的解决方案。

我正在以这种方式将文件添加到存储中:

    $resourceFactory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Resource\ResourceFactory::class);
    $storage = $resourceFactory->getDefaultStorage();

    $fileObject = $storage->addFile(
        $temporaryFile,$storage->getFolder('some-folder/'),$newfilename
    );

并且可以像这样使用 updateProperties() 操作一堆属性

    $fileObject->updateProperties(array(
        'name' => 'foo',));

但是,当我创建文件时,如何在 sys_file_Metadata 中设置更多元数据属性,例如标题或替代文本?是否有文档,如何执行此操作。我只找到了这个:

https://docs.typo3.org/m/typo3/reference-coreapi/10.4/en-us/ApiOverview/Fal/UsingFal/ExamplesFileFolder.html#

但本文档不包含有关元数据处理的提示

解决方法

我使用 MetaDataAspect 对象上可用的 File 解决了这个问题。

$metaData = $fileObject->getMetaData();
$metaData->offsetSet('title','Image title');
$metaData->save();

小心使用,因为 save 方法被标记为 @internal。还要结帐 this changelog document,这是我找到的唯一文档。