Zum Inhalt springen

"File is missing!" bei Frontend upload

Erstellt am 15. November 2017 · 1 Antwort · letzte Antwort am 15. November 2017

Tags: TYPO3 7, Frage

Power-Poler ·

Hallo,
Habe es jetzt endlich geschafft, dass Nutzer ein Profilbild hochladen können.
Dies wird bei Upload in einen Ordner geschoben, welcher von Resize images automatically überwacht wird, somit wird das Bild auch nicht so groß.
Die Datei wird bei Upload umbenannt in image.* es sind nur 5Bildtyspen erlaubt, somit sind im Ordner maximal 5 Dateien. Der Ordner ist fileadmin/Image/username
Soweit so gut.
Wenn ich jetzt im Backend von Typo3 mit den Nutzer anschaue, steht bei Image das richtige Bild.
Nur darunter: File is missing! uploads/pics//user0/image.gif
Wo der Doppelte / herkommt weiß ich, das ist aber nicht das Problem.
Wollte jetzt die Bilder in uploads schieben, leider komme ich aber nur an fileadmin, und da ist der Ordner "uploads" nicht drin. Wie kann ich Typo jetzt sagen, es soll doch bitte im Ordner fileadmin/Image/username nach den Bildern suchen?
Oder
Wie komme ich mit $storage = $storageRepository->findByUid('1'); //this is the fileadmin storage
An den Ordner uploads? Hab in der DB nachgesehen, es gibt dort nur die eine Uid, und die verweist auf fileadmin.

public function saveFormAction() {
	$user = $this->userRepository->findByUid($GLOBALS['TSFE']->fe_user->user['uid']);
    $newPDFPath = 'Image/'.$GLOBALS['TSFE']->fe_user->user['username'].'/';
	if ($_FILES['tx_usercontrol_user_control_userhome']['name']['formimg'][0]) {     
        $tmpName = $_FILES['tx_usercontrol_user_control_userhome']['name']['formimg'][0];
        $tmpFile  = $_FILES['tx_usercontrol_user_control_userhome']['tmp_name']['formimg'][0];
		//$filetype  = $_FILES['tx_usercontrol_user_control_userhome']['type']['formimg'][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);
		}
		$pos = strripos($tmpName, '.');;
		$newFileName = 'image'.substr($tmpName,$pos);
		if(($this->checkMimeType(substr($tmpName,$pos+1), $tmpFile))){
			$movedNewFile = $storage->addFile($tmpFile, $targetFolder, $newFileName, \TYPO3\CMS\Core\Resource\DuplicationBehavior::REPLACE);
			$user->setImage('/'.$GLOBALS['TSFE']->fe_user->user['username'].'/'.$newFileName);
			$this->userRepository->update($user);
			$this->redirect('list', NULL, NULL, array('uid'=>$GLOBALS['TSFE']->fe_user->user['uid']));
		}	
	}

Schon mal Danke für eine Antwort
Mfg
Power-Poler

Power-Poler · · Beste Antwort

Habs gefunden
#120197

Habe es über die Globals Variable die ganze Zeit versucht, aber ['columns'] vergessen.
Das Ergebnis: die sys_log Tabelle hat sich mit 10000 Einträgen gefüllt (warum auch immer), und Apache lies mich nicht mehr in den Log Ordner im Backend (Speicher erschöpft)
Nunja
In der Datei Configuration\TCA\Overrides\fe_users.php die folgende Zeile angehängt:
$GLOBALS['TCA']['fe_users']['columns']['image']['config']['uploadfolder'] = 'fileadmin/Image';

Und schon ist der Pfad umgebogen.
Bzw. erst die Extension entfernen und wieder einbinden.