---
title: "Datei Upload mit StorageRepository benennt Dateien um"
url: "https://www.typo3.net/d/126415-datei-upload-mit-storagerepository-benennt-dateien-um"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Datei-Upload","Dateien & FAL","Frage","TYPO3 7"]
created: "2017-11-14"
last_reply: "2017-11-15"
replies: 3
solved: true
page: 1
pages: 1
lang: "de"
---

# Datei Upload mit StorageRepository benennt Dateien um

Extensions › Entwicklung · 3 Antworten · gelöst · gestartet 2017-11-14

## Frage

**Power-Poler** · 2017-11-14 · [Beitrag #1](https://www.typo3.net/d/126415-datei-upload-mit-storagerepository-benennt-dateien-um/1)

Hallo,
Versuche mit gerade an einem eigenen Datei Upload.

```php
public function saveFormAction() {
    $newPDFPath = 'user_upload/User_Dateien/'.$GLOBALS['TSFE']->fe_user->user['username'].'/';
	\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($_FILES);
	//var_Dump($_FILES['tx_usercontrol_user_control_usercreatetext']['name']['formpdf'][0]);
	var_Dump($_FILES['tx_usercontrol_user_control_usercreatetext']['type']['formpdf'][0] == 'application/pdf');
	var_Dump($_FILES['tx_usercontrol_user_control_usercreatetext']['name']['formpdf'][0] and $_FILES['tx_usercontrol_user_control_usercreatetext']['type']['formpdf'][0] == 'application/pdf');
	if ($_FILES['tx_usercontrol_user_control_usercreatetext']['name']['formpdf'][0] and $_FILES['tx_usercontrol_user_control_usercreatetext']['type']['formpdf'][0] == 'application/pdf') {

        //be careful - you should validate the file type! This is not included here       
        $tmpName = $_FILES['tx_usercontrol_user_control_usercreatetext']['name']['formpdf'][0];
        $tmpFile  = $_FILES['tx_usercontrol_user_control_usercreatetext']['tmp_name']['formpdf'][0];

		$storageRepository = $this->objectManager->get('TYPO3\\CMS\\Core\\Resource\\StorageRepository');
		$storage = $storageRepository->findByUid('1'); //this is the fileadmin storage
		//build the new storage folder
		if(!$storage->hasFolder($newPDFPath)){
			$targetFolder = $storage->createFolder($newPDFPath);
		}
		else {
			$targetFolder = $storage->getFolder($newPDFPath); //getFolder steht zwar nicht in der API, Funktioniert aber im Gegenzug zu anderen Methoden, die in der API stehen. :/
		}
		$newFileName = $tmpName;
		$Path=$newPDFPath.$tmpName;
		var_Dump($storage->hasFile($Path));
		var_Dump($tmpFile);
		$movedNewFile = $storage->addFile($tmpFile, $targetFolder, $newFileName);
	}
```

Nunja, eine Datei mit Namen: „Ich bin eine Datei.pdf“
Wird zu: „ich_bin_eine_datei.pdf“
Des Weiteren  erzeugt die Methode addFile Kopien einer Datei, wenn der Name bereits Existiert.
„ich_bin_eine_datei01.pdf“ usw…
Wie bekomme ich ihn jetzt dazu, die Datei Richtig zu benennen, und statt eine Kopie anzulegen einen Error ausgibt?
hasFile Funktioniert leider nicht, da die Datei im Ordner ja anderes heißt, und wenn er anfängt kopieren anzulegen findet er natürlich nichts mehr, und gibt einfach FALSE zurück…
Die API Doku ist fast nicht zu gebrauchen, in der Doku steht return Folder, es wird aber ein String zurückgegen, genauso wenn Parameter String dasteht, will er einen Folder, usw. Die Beschreibung von addFile will 3 x String, wenn ich ihr aber 3 Strings gebe, meckert er, das er einen Folder möchte…usw..
<https://api.typo3.org/typo3cms/7/html/class_t_y_p_o3_1_1_c_m_s_1_1_core_1_1_resource_1_1_folder.html>
Ich Orientiere mich nach dieser Anleitung:
<http://t3-developer.com/1/ext-programmierung/techniken-in-extensions/fal-dateiupload-im-frontend/>
//build the new storage folder
        $targetFolder = $storage->createFolder($newImagePath);
Ist zwar eine schöne Methode, leider liefert sie Oops, an Error usw, wenn der Order bereits existiert… Hat sich hier so viel geändert an der Classe?
Hoffentlich habt ihr noch eine Idee.
Schon mal Danke für eine Antwort
Mfg
Power-Poler

## Beste Antwort

**Power-Poler** · 2017-11-14 · [Beitrag #2](https://www.typo3.net/d/126415-datei-upload-mit-storagerepository-benennt-dateien-um/2)

Habe die Falsche Classe verwendet, es ist diese:
<https://api.typo3.org/typo3cms/7/html/class_t_y_p_o3_1_1_c_m_s_1_1_core_1_1_resource_1_1_resource_storage.html>

Groß und Kleinschreibung ist ebenfalls gelöst, Filelist->fileadmin(rechtsklick)->Edit->Configuration->"Use case sensetive identifiers"
Nur diese verdammten Unterstriche habe ich noch nicht weg bekommen.
Sollte aber auch keine Rolle mehr spielen.
In der Doku wurde die Methode addFile richtig Erklärt, und ich konnte anstatt Rename, Replace eintragen:
$movedNewFile = $storage->addFile($tmpFile, $targetFolder, $newFileName, \TYPO3\CMS\Core\Resource\DuplicationBehavior::REPLACE);

## Antworten

### [#2](https://www.typo3.net/d/126415-datei-upload-mit-storagerepository-benennt-dateien-um/2) · Power-Poler · 2017-11-14 · Beste Antwort

(Text siehe oben unter „Beste Antwort“.)

### [#3](https://www.typo3.net/d/126415-datei-upload-mit-storagerepository-benennt-dateien-um/3) · Norman2k · 2017-11-14

Nur mal so aus Interesse, wieso ist es dir so wichtig, dass der Dateiname erhalten bleibt? Wenn ich manchmal sehe, was Kunden für fiese Zeichen in Dateinamen haben, bin ich sehr glücklich darüber, dass TYPO3 mir die Arbeit abnimmt, solche Zeichen raus zu filtern ;)

### [#4](https://www.typo3.net/d/126415-datei-upload-mit-storagerepository-benennt-dateien-um/4) · Power-Poler · 2017-11-15

War da noch der Meinung, dass ich Prüfen müsste, ob die Datei bereits existiert, und wenn die Datei anderes im Ordner benannt ist, wird die Prüfung immer auf FALSE hinauslaufen.
Durch die richtige Classen Doku und REPLACE konnte ich das ja alles Typo3 überlassen.
Groß und Kleinschreibung ist aber sicher nicht das Problem bei der Dateibenennung, wenn er nun weiterhin Sonderzeichen und Blödsinn rausfillter ist es in Ordnung.

---

Quelle: „Datei Upload mit StorageRepository benennt Dateien um“, typo3.net, https://www.typo3.net/d/126415-datei-upload-mit-storagerepository-benennt-dateien-um
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
