Kurze Überblick von Abfragen und Funktion FAL betreffend:
Falls der Dateiname wie folgt zurückgegeben wird „file:123456“, so kann die nachfolgende Funktion den vollständigen Dateinamen zurück liefern.
public function getFile ( $imageId ) { $imageId = str_replace('file:','',$imageId); $q = 'SELECT identifier,storage FROM sys_file WHERE uid = '.$imageId.' LIMIT 1'; $res = $GLOBALS['TYPO3_DB']->sql_query($q); if ( $res && $GLOBALS['TYPO3_DB']->sql_num_rows($res) > 0 ) { $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res); $identifier = $row['identifier']; $storageUid = $row['storage']; $storageRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\StorageRepository'); $storageObj = $storageRepository->findByUid($storageUid); $storageConfig = $storageObj->getConfiguration(); $basePath = $storageConfig['basePath']; $file = $basePath.$identifier; $file = str_replace('//','/',$file); #$file = $storageObj->getFile($identifier); return $file; } return false; }
Zu einem Datensatz gehörige Datei auslesen:
public function getFilename ( $uid_foreign, $tablenames, $fieldname, $pid ) { $files = array(); $fileRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\FileRepository'); $fileObjects = $fileRepository->findByRelation($tablenames,$fieldname,$uid_foreign); if ( count($fileObjects) > 0 ) { foreach ($fileObjects as $key => $fileObject ) { #$files[$key]['reference'] = $fileObject->getReferenceProperties(); #$files[$key]['original'] = $fileObject->getOriginalFile()->getProperties(); $files[$key]['filename'] = $fileObject->getPublicUrl(); } } return $files; }