2016-07-07 17 views
1

Ich versuche, eine Datei in TYPO3 db über Frontend mit Kernfunktionen oder FileRepository, genau in sys_file Tabelle einzufügen. Während der Untersuchung habe ich einige Lösungen, wie gesehen,FAL-Einfügung in sys_file TYPO3

$storageRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\StorageRepository'); 
$storage = $storageRepository->findByUid(1); 

$fileObject = $storage->addFile('/tmp/myfile', $storage->getRootLevelFolder(), 'newFile'); 
echo $fileObject->getIdentifier(); // Should output "/newFile" 

Aber ich kann immer noch nicht diesen addFile() in storageRepository Klasse finden. Fehle ich etwas hier?

+0

Haben Sie einen Fehler erhalten? Was ist die Frage? – sven

+0

Ich meinte .. Ich muss einen sys_file Datensatz mit den Daten der Datei über Frontend meiner Erweiterung hochgeladen hinzufügen. Überhaupt keine Fehler. Aber wie Snippet schlägt vor, gibt es keine addFile() in StorageRepository. –

+0

Das Snippet funktioniert. Ich habe es gestern benutzt. Siehe Antwort von @mario. – sven

Antwort

0

@ mario Danke. Kaufen Sie, wie ich das erreicht habe, was ich geplant habe. Hier ist, was ich tat ..

public function uploadFile($uploadedfile) { 

    $storage = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\StorageRepository'); 

    $filePath = 'uploads/tx_fileupload/'.$uploadedfile['updata']['name']; 
    $title = $uploadedfile['updata']['name']; 
    $size = $uploadedfile['updata']['size']; 

    // Moving the physical file to destined folder 
    \TYPO3\CMS\Core\Utility\GeneralUtility::upload_copy_move($uploadedfile['updata']['tmp_name'],$filePath); 

    // Adding a record in sys_file_storage 
    $fileObject = $storage->createLocalStorage($uploadedfile['updata']['name'],$uploadedfile['updata']['tmp_name'],$filePath,''); 

    // Inserting file in sys_file 
    $repositoryFileObject = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->retrieveFileOrFolderObject($filePath); 

    return $repositoryFileObject; 
} 

Jetzt bewegt auf das Hinzufügen sys_file_reference Rekord entspricht.