TYPO3 11:将 t3 文件 uri 转换为文件标识符
TYPO3 11: convert t3 file uri into file identifier
如何将 TYPO3 文件 uri t3://file?uid=54
转换为可用于其他需要文件标识符的 TYPO3 方法?
文件 uri 由选择 XML 文件的 flexform 返回。应该阅读此 XML 文件。
但是我在 TYPO3 核心中找不到有用的 API 函数。
$paramTestFile = 't3://file?uid=54';
$xmlString = GeneralUtility::getURL($paramTestFile);
以上代码对于 TYPO3 URI 失败。
uid=54 的文件引用位于“fileadmin/example.xml”。
Filelist 后端模块显示此文件的详细信息。
但是,我在 PHP 代码中也需要此文件路径才能读取文件。
use TYPO3\CMS\Core\LinkHandling\FileLinkHandler;
$fileHandler = GeneralUtility::makeInstance(FileLinkHandler::class);
$fileInfo = $fileHandler->asString($paramTestFile);
无法在上面的例子中使用$paramTestFile
。
class FileLinkHandler 及其方法 asString
与我需要的完全相反。
$content = @file_get_contents($url);
但是读取方法需要绝对文件路径。如何将 FAL 文件 URI 转换为文件标识符?
use TYPO3\CMS\Core\Resource\StorageRepository;
$storageRepository = GeneralUtility::makeInstance(StorageRepository::class);
$defaultStorage = $storageRepository->getDefaultStorage();
$fileInfo = $defaultStorage->getFileByIdentifier($paramTestFileIdentifier);
要解析 t3://file...
URN,请使用 TYPO3\CMS\Core\LinkHandling\LinkService::resolve()
. This method will return an array with a key file
containing a TYPO3\CMS\Core\Resource\FileInterface
。这也适用于其他 URN,但会 return 另一个数组结构。
然后使用getContents()
method of the FileInterface
最终得到文件内容
这部分核心的文档不是很详细,所以我已经直接链接到相关资源。
如何将 TYPO3 文件 uri t3://file?uid=54
转换为可用于其他需要文件标识符的 TYPO3 方法?
文件 uri 由选择 XML 文件的 flexform 返回。应该阅读此 XML 文件。
但是我在 TYPO3 核心中找不到有用的 API 函数。
$paramTestFile = 't3://file?uid=54';
$xmlString = GeneralUtility::getURL($paramTestFile);
以上代码对于 TYPO3 URI 失败。
uid=54 的文件引用位于“fileadmin/example.xml”。 Filelist 后端模块显示此文件的详细信息。 但是,我在 PHP 代码中也需要此文件路径才能读取文件。
use TYPO3\CMS\Core\LinkHandling\FileLinkHandler;
$fileHandler = GeneralUtility::makeInstance(FileLinkHandler::class);
$fileInfo = $fileHandler->asString($paramTestFile);
无法在上面的例子中使用$paramTestFile
。
class FileLinkHandler 及其方法 asString
与我需要的完全相反。
$content = @file_get_contents($url);
但是读取方法需要绝对文件路径。如何将 FAL 文件 URI 转换为文件标识符?
use TYPO3\CMS\Core\Resource\StorageRepository;
$storageRepository = GeneralUtility::makeInstance(StorageRepository::class);
$defaultStorage = $storageRepository->getDefaultStorage();
$fileInfo = $defaultStorage->getFileByIdentifier($paramTestFileIdentifier);
要解析 t3://file...
URN,请使用 TYPO3\CMS\Core\LinkHandling\LinkService::resolve()
. This method will return an array with a key file
containing a TYPO3\CMS\Core\Resource\FileInterface
。这也适用于其他 URN,但会 return 另一个数组结构。
然后使用getContents()
method of the FileInterface
最终得到文件内容
这部分核心的文档不是很详细,所以我已经直接链接到相关资源。