[TYPO3-german] Typo3 6.0.1 und extbase, File Uploads in Extensions
Patrick Schriner
patrick.schriner at diemedialen.de
Wed Feb 6 13:22:00 CET 2013
Sinnvollerweise überschreibt man zusätzlich die Methode errorAction, um zu
große Dateiuploads abzufangen - zumindest in TYPO3 4.5 eine gute Variante
um an diesen Fehlerfall zu kommen.
Patrick
On Wed, 06 Feb 2013 13:13:38 +0100, Benjamin Rau <rau at codearts.at> wrote:
> Hi Jan.
>
> Also mein Upload sieht in Auszügen so aus:
>
> /**
> * action update
> *
> * @param Tx_Hcobjects_Domain_Model_Profile $profile
> * @return void
> */
> public function updateAction(Tx_Hcobjects_Domain_Model_Profile
> $profile) {
>
> [...]
>
> if ($_FILES['tx_hcprofiles_clubs'] ) {
> $basicFileFunctions =
> t3lib_div::makeInstance('t3lib_basicFileFunctions');
>
> $files = $_FILES['tx_hcprofiles_clubs'];
>
> $fileName = $basicFileFunctions->getUniqueName(
> $basicFileFunctions->cleanFileName($files['name']['profile']['image']),
> t3lib_div::getFileAbsFileName($profile->getBasePath())
> );
>
> $types = Array('image/png' => 'png', 'image/jpeg' => 'jpg',
> 'image/jpeg' => 'jpeg', 'image/gif' => 'gif');
>
> if($files['name']['profile']['image']=='') {
> $error = "Keine Datei ausgewählt";
> } elseif(!$files) {
> $error = "Dateien für nicht unterstützte Extension hochgeladen";
> } elseif($files['profile']['image']['error'] != 0) {
> $error = 'Allgemeiner Fehler beim Hochladen des Bildes';
> }
> elseif(array_key_exists($_FILES['tx_hcprofiles_clubs']['profile']['image']['type'],
> $types)) {
> $error = 'Das Sponsor Logo hat ein ungültiges Format';
> }
> elseif($basicFileFunctions->checkIfAllowed($_FILES['tx_hcprofiles_clubs']['profile']['image']['type'],t3lib_div::getFileAbsFileName($profile->getBasePath()),$fileName))
> {
> $error = "Fileextension not allowed by configuration";
> } else {
> t3lib_div::upload_copy_move(
> $files['tmp_name']['profile']['image'],
> $fileName);
>
> $profile->setImage(basename($fileName));
> }
> }
>
> [...]
>
> $this->profileRepository->update($profile);
> $this->flashMessageContainer->add('Your Profile was updated.');
> }
>
>
> Gruß Benny
>
>
>
> Am 06.02.2013 um 09:50 schrieb Ephraim Härer <ephraim at ephespage.de>:
>
>> Hallo,
>> ich würde mal in der aktuellen Powermail-Verison nachschauen,
>> dort ist soweit ich weiß der Fileupload implementiert.
>>
>>
>> MfG
>> E. Härer
>>
>> Am 06.02.2013 02:40, schrieb Jan Leifert:
>>> Hallo Benny,
>>> den Eindruck das extbase das nicht kann habe ich auch. Weil man
>>> wirklich
>>> nirgendwo was zu dem Thema findet.
>>>
>>> Aber warum werden $_FILES von extbase dann überhaupt verarbeitet?? Wenn
>>> der RequestDispatcher die in Ruhe lassen würde würd das alte Beispiel
>>> von typo3blogger.de funktionieren?!
>>>
>>> Das hier hab ich noch gefunden:
>>>
>>> http://forge.typo3.org/issues/5718
>>>
>>> letzter Eintrag:
>>>
>>> "Set this to 'on hold' because we have to wait until the new property
>>> mapper can finally be used securely. This will be done for 6.1."
>>>
>>>
>>> :-/ Ätzend!!
>>>
>>> Ich glaub das $_FILES angefasst wird ist ein Code Rest davon und ich
>>> bau
>>> es bei mir aus. Dann müsste die Lösung von typo3blogger.de
>>> funktionieren.
>>>
>>>
>>> Am 05.02.13 22:56, schrieb Benjamin Rau:
>>>> Hallo jan.
>>>>
>>>> Extbase kam meines Wissens nach nativ noch keinen File upload handeln.
>>>>
>>>> Du musst sie Speicherung selber schreiben, beispielsweise mir den
>>>> pibase
>>>> Klassen.
>>>>
>>>> Danach den Dateinamen im Model setzen.
>>>>
>>>> Gruß Benny
>>>> Am 05.02.2013 22:27 schrieb "Jan Leifert" <jan at leifert.net>:
>>>>
>>>>> Hallo,
>>>>>
>>>>> ich such mich grade blöd für Beispiele von einem Dateiupload in einer
>>>>> extbase extension. Das einzige was ich zu finde ist das hier:
>>>>>
>>>>> http://typo3blogger.de/**extbase-file-upload/<http://typo3blogger.de/extbase-file-upload/>
>>>>>
>>>>>
>>>>> Das Beispiel ist aber alt und funktioniert mit aktuellen extbase
>>>>> Versionen
>>>>> nicht mehr.
>>>>>
>>>>> Das Problem scheint zu sein das extbase die Form-Inhalte schon
>>>>> automatisch
>>>>> auf das Model mapped, also versucht die Inhalte von $_FILES an meine
>>>>> setImage Funktion zu übergeben. Die erwartet aber einen Dateinamen
>>>>> als
>>>>> String und kein Array.
>>>>>
>>>>> Ich vermut ja fast ich habe einfach den falschen Datentyp gewählt.
>>>>> Aber
>>>>> Experimente mit Tx_Extbase_Domain_Model_File haben mich auch nicht
>>>>> weitergebracht.
>>>>>
>>>>> Grüße,
>>>>> Jan Leifert
>>>>>
>>>>> ______________________________**_________________
>>>>> TYPO3-german mailing list
>>>>> TYPO3-german at lists.typo3.org
>>>>> http://lists.typo3.org/cgi-**bin/mailman/listinfo/typo3-**german<http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german>
>>>>>
>>>>>
>>>>>
>>>> _______________________________________________
>>>> TYPO3-german mailing list
>>>> TYPO3-german at lists.typo3.org
>>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>>
>> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>
>
--
Patrick Schriner
More information about the TYPO3-german
mailing list