---
title: "Ajax Image Upload - Speichern mit FAL"
url: "https://www.typo3.net/d/120492-ajax-image-upload-speichern-mit-fal"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Dateien & FAL","Frage","JavaScript & AJAX","TYPO3 6.x"]
created: "2015-07-09"
last_reply: "2015-07-10"
replies: 3
solved: false
page: 1
pages: 1
lang: "de"
---

# Ajax Image Upload - Speichern mit FAL

Extensions › Entwicklung · 3 Antworten · gestartet 2015-07-09

## Eröffnungsbeitrag

**metabolic119** · 2015-07-09 · [Beitrag #1](https://www.typo3.net/d/120492-ajax-image-upload-speichern-mit-fal/1)

Hallo alle zusammen,

Ich habe folgendes Problem:

Ich habe beim fe_user ein Feld "Avatar" hinzugefügt und im Extensionbuilder als Feldtyp "Image" angegeben. Dass wird ja dann als FileReference behandelt.

Nun habe ich mit dem pluploader einen ImageUpload gebaut, mit dem das file hochgeladen wird.
Sieht so aus:

```php
/**
	 * action uploadProfileImage
	 *
	 * @return void
	 */
	public function uploadProfileImageAction() {
		$fileName = $_FILES['file']['name'];
		$storageRepository = $this->objectManager->get('TYPO3\\CMS\\Core\\Resource\\StorageRepository');
		$storage = $storageRepository->findByUid('1');
		$relativFolderPath = $this->settings['profileImageRelativPath'] . '/' . $GLOBALS['TSFE']->fe_user->user['uid'];
		$fullFolderPath = $this->settings['profileImageFullPath'] . '/' . $GLOBALS['TSFE']->fe_user->user['uid'];
		$absolutePath = PATH_site . $fullFolderPath;
		$targetFolder = '';
		if (!file_exists($absolutePath)) {
			$targetFolder = $storage->createFolder($relativFolderPath);
		} else {
			$targetFolder = $storage->getFolder($relativFolderPath);
		}
		$fileName = $this->uploadData($fileName, $fullFolderPath);
		$relativFilePath = $relativFolderPath . '/' . $fileName;
		if ($storage->hasFile($relativFilePath)) {
			$movedNewFile = $storage->getFile($relativFilePath);
		} else {
			$movedNewFile = $storage->addFile($relativFilePath, $targetFolder, $fileName);
		}
		$newFileReference = $this->objectManager->get('\\MY\\OWN\\MODEL\\FileReference');
		$newFileReference->setFile($movedNewFile);
		$userObject = $this->feUserRepository->findByUid($GLOBALS['TSFE']->fe_user->user['uid']);

		$userObject->setAvatar($newFileReference);
		$this->feUserRepository->update($userObject);

		$persistenceManager = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager');
		$persistenceManager->persistAll();
```

Das haut alles hin bis zum persistAll().
Dort bekomme ich dann folgende Exception:
"Table 'myextension.tx_EXTENSION_my_own_model_filereference' doesn't exist"

Meine FileReference Klasse sieht so aus:
Das habe ich in mehreren Threads so gesehen, dass man das so machen sollte.

```php
class FileReference extends \TYPO3\CMS\Extbase\Domain\Model\FileReference{
    /**
     * uid of a sys_file
     *
     * @var integer
     */
    protected $originalFileIdentifier;

    /**
     * setOriginalResource
     *
     * @param \TYPO3\CMS\Core\Resource\FileReference $originalResource
     * @return void
     */
    public function setOriginalResource(\TYPO3\CMS\Core\Resource\FileReference $originalResource) {
        $this->originalResource = $originalResource;
        $this->originalFileIdentifier = (int)$originalResource->getOriginalFile()->getUid();
    }

    /**
     * setFile
     *
     * @param \TYPO3\CMS\Core\Resource\File $falFile
     * @return void
     */
    public function setFile(\TYPO3\CMS\Core\Resource\File $falFile) {
        $this->originalFileIdentifier = (int)$falFile->getUid();
    }
}
```

Er versucht offensichtlich, meine FileReference Klasse auf eine Table zu mappen was natürlich nicht funktionieren wird.
Jetzt meine Frage, wie mache ich das am besten? :)

Ist mein Ansatz überhaupt korrekt mit dem Storage das zu machen?

Also ganz allgemein, wie würdet ihr das lösen, einen Fileupload mit Ajax und das Bild soll dann bei einem Objekt gespeichert werden in der Uploadaction.

Vielen dank für eure Hilfe,
Metabolic

## Antworten

### [#2](https://www.typo3.net/d/120492-ajax-image-upload-speichern-mit-fal/2) · charhunter · 2015-07-09

Hallo Metabolic,

du musst noch folgendes Mapping in dein Typoscript (ext_typoscript_setup.txt) aufnehmen:

```typoscript
config.tx_extbase {
    persistence {
        classes {
            VENDOR\EXTENSION\Domain\Model\FileReference {
                mapping {
                    tableName = sys_file_reference
                    columns {
                        uid_local.mapOnProperty = file
                    }
                }
            }
        }
        # make sure ref_index is updated
        updateReferenceIndex = 1
    }
}
```

VENDOR und EXTENSION gegen deine Werte austauschen.

Hoffe so geht es.

Viele Grüße

charhunter

### [#3](https://www.typo3.net/d/120492-ajax-image-upload-speichern-mit-fal/3) · metabolic119 · 2015-07-10

Danke für die Hilfe!
das war die Lösung :)

### [#4](https://www.typo3.net/d/120492-ajax-image-upload-speichern-mit-fal/4) · coder46 · 2015-07-10

eine Frage zu deiner uploadProfileImageAction(), hast du die in der createAction dann wieder aufgerufen ? und hast du da noch etwas anderes geändert oder hinzugefügt(TCA,Model,setup) ????

Ich versuche so ein ImageUpload schon seit Tagen und ich bekomme es einfach nicht hin.

Wenn du mir weiterhelfen könntest, würde ich mich sehr freuen.

Danke

---

Quelle: „Ajax Image Upload - Speichern mit FAL“, typo3.net, https://www.typo3.net/d/120492-ajax-image-upload-speichern-mit-fal
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
