Zum Upload einer Datei im Backend oder Frontend von Typo3 8+ hilft die ExtendedFileUtility mit ein paar schönen Methoden.
Für Suchmaschinen: Upload einer Datei in eigenem Backend-Module von Typo3. Upload file in typo3 backend module. File-Upload Typo3 backend, move_uploaded_file() in Mod-Controller. Typo3 ExtendedFileUtility upload example. TYPO3\CMS\Core\Utility\File\ExtendedFileUtility::init(). Upload files in TYPO3 from Frontend. Datei vom Frontend hochladen und im Controller an Ort bewegen. Typo3 upload file data. f:form.upload nutzen zum Upload einer Datei aus dem Backend oder Frontend.
Fluid-Template mit Formular zum Upload der Datei:
Auszug aus dem ModController zum Empfangen der Datei und Speichern im Verzeichnis fileadmin/_temp_
/**
* action import Excel
*
* @return array
*/
public function importAction() {
$data = [];
$namespace = key($_FILES);
$targetFalDirectory = '1:/_temp_/';
$this->registerUploadField($data, $namespace, 'file', $targetFalDirectory);
$fileProcessor = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Utility\\File\\ExtendedFileUtility');
$fileProcessor->setActionPermissions();
$fileProcessor->start($data);
$fileProcessor->setExistingFilesConflictMode(\TYPO3\CMS\Core\Resource\DuplicationBehavior::REPLACE);
$result = $fileProcessor->processData();
foreach ($result['upload'] as $files) {
$file = $files[0];
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($file);
}
return $file;
}
/**
* @param array &$data
* @param string $namespace
* @param string $fieldName
* @param string $targetDirectory
* @return void
*/
protected function registerUploadField(array &$data, $namespace, $fieldName, $targetDirectory = '1:/_temp_/') {
if (!isset($data['upload'])) {
$data['upload'] = [];
}
$counter = count($data['upload']) + 1;
$keys = array_keys($_FILES[$namespace]);
foreach ($keys as $key) {
$_FILES['upload_' . $counter][$key] = $_FILES[$namespace][$key][$fieldName];
}
$data['upload'][$counter] = [
'data' => $counter,
'target' => $targetDirectory,
];
}
Hallo,
vielen Dank für diesen hilfreichen Tipp.
Leider fehlt unter „Fluid-Template mit Formular zum Upload der Datei:“ das Fluid-Template, sprich, der Code-Block ist leer. Könnten Sie den noch hinzufügen. Dann wäre es perfekt 🙂
Vielen Dank im Voraus
Henning