Discussion:
[TYPO3-german] FAL Upload im Frontend?
Hendrik Reimers (KERN23.de)
2014-07-28 13:07:17 UTC
Permalink
Hallo,

finde f?r folgendes keine richtige L?sung...
Habe mit dem Ext. Builder f?r 6.2 eine Ext. gebaut. Aber Fileupload ist
ja nicht integriert so richtig.

Wie kann ich nun eine einzelne oder mehrere Dateien ?ber das Frontend
hochladen auf die TYPO3 typisch erlaubten Dateitypen pr?fen und per FAL
zu meinem Model hinzuf?gen?

Im Model steht ja schon "setCoverImage(...FileReference..).

Hoffe mir kann jemand weiterhelfen.

Danke schon mal

gr??e
henny
Sascha
2014-07-28 14:23:31 UTC
Permalink
Habe einmal folgende L?sung gefunden: Nutzt aber kein FAL!

in deinem Domain model wo das Bild zugeordnet sein soll:

const UPLOAD_TARGET = 'fileadmin/userimages/';

/**
* Sets the userimage
*
* @param \array $userimage
* @return void
*/
public function setUserimage($userimage) {
$date = new \DateTime();

$basicFileFunctions = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Core\Utility\File\BasicFileUtility');
$types = Array('image/png' => 'png', 'image/jpeg' => 'jpg', 'image/jpeg' => 'jpeg', 'image/gif' => 'gif');

$fileName = $basicFileFunctions->getUniqueName(
$basicFileFunctions->cleanFileName($date->getTimestamp().'_'.$userimage['name']),
\TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName(self::UPLOAD_TARGET)
);
if ($userimage['size'] <= 0) {
$error = 'Upload fehlgeschlagen';
} elseif( !array_key_exists($userimage['type'], $types) ) {
$error = 'Das Bild hat ein ung?ltiges Format';
} else {
if ( \TYPO3\CMS\Core\Utility\GeneralUtility::upload_copy_move( $userimage['tmp_name'], $fileName) ) {
$this->userimage = basename($fileName);
}
}

}


Dann kannst du im Formular das ganz einfach hochladen mit
<f:form.upload property="daten.userimage" />


Ist sicher nicht perfekt. Zum Beispiel zum error reporting etc.
Aber vielleicht hilft es. Denke man kann das ganze sicher noch umbauen das es auch mit FAL funktioniert.
Hendrik Reimers (KERN23.de)
2014-07-29 15:25:48 UTC
Permalink
Danke, aber leider ben?tige ich es mit FAL, da ich im TCA eine
FileReference habe.
Post by Sascha
Habe einmal folgende L?sung gefunden: Nutzt aber kein FAL!
const UPLOAD_TARGET = 'fileadmin/userimages/';
/**
* Sets the userimage
*
*/
public function setUserimage($userimage) {
$date = new \DateTime();
$basicFileFunctions =
\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Core\Utility\File\BasicFileUtility');
$types = Array('image/png' => 'png', 'image/jpeg' => 'jpg',
'image/jpeg' => 'jpeg', 'image/gif' => 'gif');
$fileName = $basicFileFunctions->getUniqueName(
$basicFileFunctions->cleanFileName($date->getTimestamp().'_'.$userimage['name']),
\TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName(self::UPLOAD_TARGET)
);
if ($userimage['size'] <= 0) {
$error = 'Upload fehlgeschlagen';
} elseif( !array_key_exists($userimage['type'], $types) ) {
$error = 'Das Bild hat ein ung?ltiges Format';
} else {
if ( \TYPO3\CMS\Core\Utility\GeneralUtility::upload_copy_move(
$userimage['tmp_name'], $fileName) ) {
$this->userimage = basename($fileName);
}
}
}
Dann kannst du im Formular das ganz einfach hochladen mit
<f:form.upload property="daten.userimage" />
Ist sicher nicht perfekt. Zum Beispiel zum error reporting etc.
Aber vielleicht hilft es. Denke man kann das ganze sicher noch umbauen
das es auch mit FAL funktioniert.
Hendrik Reimers (KERN23.de)
2014-07-29 17:50:17 UTC
Permalink
soweit bin ich schon mal... aber bekomme keine fileReference hin... kann
mir jemand helfen wie ich das noch hinbekomme?

/**
*
* @var array $fileData
* @var integer $feUserId
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
private function uploadFile($fileData, $feUserId) {
$storageRepository =
\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\StorageRepository');
$storage = $storageRepository->findByUid(1); # Fileadmin = 1
$saveFolder = $storage->getFolder($this->settings['uploadFolder']);

// Datei speichern
$fileObject = $storage->addFile($fileData['tmp_name'], $saveFolder,
$feUserId.'_'.$fileData['name']);

// Dateiobjekt
$repositoryFileObject = $storage->getFile($fileObject->getIdentifier());


die(\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($repositoryFileObject));
#$newFileReference =
$this->objectManager->get('TYPO3\CMS\Extbase\Domain\Model\FileReference');
#$newFileReference->setOriginalResource($repositoryFileObject);

return $newFileReference;
}





danke schonmal...
Post by Hendrik Reimers (KERN23.de)
Danke, aber leider ben?tige ich es mit FAL, da ich im TCA eine
FileReference habe.
Post by Sascha
Habe einmal folgende L?sung gefunden: Nutzt aber kein FAL!
const UPLOAD_TARGET = 'fileadmin/userimages/';
/**
* Sets the userimage
*
*/
public function setUserimage($userimage) {
$date = new \DateTime();
$basicFileFunctions =
\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Core\Utility\File\BasicFileUtility');
$types = Array('image/png' => 'png', 'image/jpeg' => 'jpg',
'image/jpeg' => 'jpeg', 'image/gif' => 'gif');
$fileName = $basicFileFunctions->getUniqueName(
$basicFileFunctions->cleanFileName($date->getTimestamp().'_'.$userimage['name']),
\TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName(self::UPLOAD_TARGET)
);
if ($userimage['size'] <= 0) {
$error = 'Upload fehlgeschlagen';
} elseif( !array_key_exists($userimage['type'], $types) ) {
$error = 'Das Bild hat ein ung?ltiges Format';
} else {
if ( \TYPO3\CMS\Core\Utility\GeneralUtility::upload_copy_move(
$userimage['tmp_name'], $fileName) ) {
$this->userimage = basename($fileName);
}
}
}
Dann kannst du im Formular das ganz einfach hochladen mit
<f:form.upload property="daten.userimage" />
Ist sicher nicht perfekt. Zum Beispiel zum error reporting etc.
Aber vielleicht hilft es. Denke man kann das ganze sicher noch umbauen
das es auch mit FAL funktioniert.
Sascha
2014-07-30 09:46:44 UTC
Permalink
Hallo,

habe hier: http://typo3.helmut-hummel.de/post/85015526410/file-upload-using-extbase-and-fal-in-typo3-6-2
sowie hier das dazugeh?rige Beispiel: https://github.com/helhum/upload_example
gefunden.


Vielleicht hilft das.
Hendrik Reimers (KERN23.de)
2014-07-30 19:14:27 UTC
Permalink
Danke aber irgendwie geht es nicht :(
habe mich jetzt schon an den verlinkten seiten in deinem link probiert
und an dem hier:

http://t3-developer.com/extbase-fluid/extensions-erweitern/fal-in-eigenen-extensions/fal-dateiupload-im-frontend/

aber es tut einfach nicht... jetzt kann ich im fileadmin sogar nicht mal
mehr die dateien ohne eine Exception l?schen :(
Post by Hendrik Reimers (KERN23.de)
Hallo,
http://typo3.helmut-hummel.de/post/85015526410/file-upload-using-extbase-and-fal-in-typo3-6-2
https://github.com/helhum/upload_example
gefunden.
Vielleicht hilft das.
Helmut Hummel
2014-07-30 20:20:39 UTC
Permalink
Hi Hendrik!
Post by Hendrik Reimers (KERN23.de)
Danke aber irgendwie geht es nicht :(
Wenn Du etwas ausf?hrlicher wirst und beschreibst was Du genau probiert
hast, k?nnte ich vielleicht helfen.
Post by Hendrik Reimers (KERN23.de)
habe mich jetzt schon an den verlinkten seiten in deinem link probiert
http://t3-developer.com/extbase-fluid/extensions-erweitern/fal-in-eigenen-extensions/fal-dateiupload-im-frontend/
Ich habe die Beispiel Extension gemacht und den Artikel geschrieben,
damit solche "Hacks" nicht mehr n?tig sind ;)
Post by Hendrik Reimers (KERN23.de)
aber es tut einfach nicht... jetzt kann ich im fileadmin sogar nicht mal
mehr die dateien ohne eine Exception l?schen :(
Ohne konkrete Fehlermeldungen oder Code den Du geschrieben hast zu
sehen, ist es schwer etwas zu sagen...

Viele Gr??e,
Helmut
--
Helmut Hummel
Release Manager TYPO3 6.0
TYPO3 Core Developer, TYPO3 Security Team Member

TYPO3 .... inspiring people to share!
Get involved: typo3.org
Thorsten Scheckenbach
2014-09-02 13:28:39 UTC
Permalink
Hallo,

h?nge gerade auch am FAL upload und habe es auch mit "helhum/upload_example" probiert.
Mein aktuelles Problem ist eine Exception vom PropertyMapper:

Exception while property mapping at property path "image.name":The identity property "testbild.jpg" is no UID

Gr??e

Thorsten
Helmut Hummel
2014-09-03 16:23:33 UTC
Permalink
Hi!
Post by Thorsten Scheckenbach
Exception while property mapping at property path "image.name":The identity property "testbild.jpg" is no UID
Hast Du vielleicht enctype="multipart/form-data" bei Deinem Form Tag
vergessen?

Siehe:

https://github.com/helhum/upload_example/blob/master/Resources/Private/Templates/Example/New.html#L22

Viele Gr??e,
Helmut
--
Helmut Hummel
Release Manager TYPO3 6.0
TYPO3 CMS Active Contributor, TYPO3 Security Team Member

TYPO3 .... inspiring people to share!
Get involved: typo3.org
Thorsten Scheckenbach
2014-09-04 07:55:13 UTC
Permalink
Hi,

ja $_FILES ist fein.

Gr??e

Thorsten
Björn Haverland
2015-02-09 01:48:28 UTC
Permalink
Hallo Helmut,

ich habe ein gleiches Problem, allerdings habe ich bei mir im FormTag den enctype="multipart/form-data" verwendet.

Im ObjectStorageConverter kommt der Upload auch an. Leider erhalte ich aber trotzdem die Meldung, die Thorsten auch beschreibt.

Hast du noch eine Idee?

Vielen Dank!

Viele Grüße

Björn
Helmut Hummel
2015-02-15 19:31:11 UTC
Permalink
Hallo Björn!
Post by Björn Haverland
Hallo Helmut,
ich habe ein gleiches Problem, allerdings habe ich bei mir im FormTag den enctype="multipart/form-data" verwendet.
Im ObjectStorageConverter kommt der Upload auch an. Leider erhalte ich aber trotzdem die Meldung, die Thorsten auch beschreibt.
Benutzt Du exact meine Extension oder den Code in einer eigenen?

Falls letzteres, bitte prüfe zuerst ob meine Extension für Dich
funktioniert.

Viele Grüße,
Helmut
--
Helmut Hummel
Release Manager TYPO3 6.0
TYPO3 CMS Active Contributor, TYPO3 Security Team Member

TYPO3 .... inspiring people to share!
Get involved: typo3.org
Peter Meier
2015-03-22 09:37:32 UTC
Permalink
Moinsen!

Bei mir funktioniert das leider garnicht - ich wollte checken, ob das überhaupt klappt (also bislang nicht in meine eigene Extension eingebaut), aber das hat leider nicht hingehauen.

Runtergeladen von hier: htt ps://github.com/helhum/upload_example

- Get from Github, install as extension
- Create folder ./fileadmin/contents

Anleitung befolgt. "Install as extension" (und Verzeichnis erstellt):

"TYPO3 Fatal Error: Extension key "upload_example" is NOT loaded!

More information regarding this error might be available online."

"online" verlinkt mich auf Exception 1365429656: htt p://wiki.typo3.org/Exception/CMS/1365429656

Witzigerweise taucht die Extension trotz dieses Fehlers danach als installierte Extension im Extensionmanager auf... macht aber nichts, ich kann also kein FE-Plugin auf irgendeiner Seite hinzufügen.

Typo3 6.2.11

Hat jemand Rat?

Danke und beste Grüße
Peter
bugblatterbeast
2016-06-20 21:07:16 UTC
Permalink
Vielen Dank für den Hinweis mit

enctype="multipart/form-data"

ich habe schon Ewigkeiten gesucht. Da hätte ich ja auch selbst drauf kommen können...

Ich habe die upload_example Extension aus dem TER installiert und sie läuft einwandfrei bei mir. Ich referenziere die bereitgestellten typeConverter und den ViewHelper jetzt auch in meinen Extensions, um Uploads im FrontEnd und eigenen Backend-Modulen zu ermöglichen.

@Helmut Hummel: Danke für die Bereitstellung dieser Lösung. Tolle Arbeit und eine sehr große Hilfe für uns alle.

Gruß, Nils

Loading...