Zum Inhalt springen

Fileupload im Backend

Erstellt am 14. Januar 2009 · 5 Antworten · letzte Antwort am 14. Januar 2009

Tags: Frage

tomsen81 ·

Hallo zusammen,

nach einer ca. vierstündiger Recherche im Internet hab ich leider immer noch keine Lösung für mein - prinzipell recht einfaches - Problem gefunden:
Ein Datei-Upload in einer eigenen Extension (Web-Modul, nicht über TCA)!

Das Problem ist, dass ein ganz normales, selbstgebasteltes Formular im Backend anscheinend nicht auf den $_FILES Array zugreifen kann.
Hier mein Script, welches in einer anderen Testumgebung (außerhalb von Typo3) funktioniert:

<form method="post" enctype="multipart/form-data">
<label for="name">Name:</label>
<input type="text" name="name" /> <br />
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>

Hier kann ich wunderbar auf $_FILES zugreifen. Verwende ich diesen Code in der Extension, erscheint die Dateivariable im $_POST-Array und nicht, wie es sein sollte, in $_FILES.
Kennt jemand das Problem und weiß, wie es behoben werden kann?

Die zweite Methode war der Weg über TCEForm. Hier mein Code:

$config['itemFormElName'] = 'pFile';
$config['itemFormElValue'] = $fileData ? $fileData : ' ';
$config['fieldConf']['config']['internal_type'] = 'file';
$config['fieldConf']['config']['allowed'] = 'PDF';
$config['fieldConf']['config']['disallowed'] = '';
$config['fieldConf']['config']['size'] = '1';
$config['fieldConf']['config']['show_thumbs'] = 0;
$config['fieldConf']['config']['uploadfolder'] = 'uploads/dev_intra/';

$form = t3lib_div::makeInstance('t3lib_TCEforms');
$form->initDefaultBEMode();
$form->backPath='../../../../typo3/';
     		
$this->content .= $this->doc->form = '<form method="post" name="editform">';
     		
$elements = $form->getSingleField_typeGroup('', '',array(), $config );
$this->content .=  $form->printNeededJSFunctions_top().$elements.$form->printNeededJSFunctions();

Hier war das Problem, dass sich der Browser zwar geöffnet hat, aber nachdem ich die gewünschte Datei ausgewählt hab, sie nicht wie erwartet im Select erschienen ist.
Was mir hier aufgefallen ist: die eingefügten JavaScripts waren beide hinter dem Formular, ganz egal, wie ich die Stringverknüpfung sortiert hab.

Wäre super, wenn mir hier jemand helfen könnte, da diese Datei-Geschichte das letzte Teil im Puzzle ist!

Vielen Dank vorab!
Tom

meckpo ·

Hallo,

ja dieses Problem kann einen in den Wahnsinn treiben 8-)

Bei einem Modul ist standardmäßig bereits ein <FORM>-Tag geöffnet, danach wird erst dein Code eingefügt.

Kurz gesagt: Beginne deinen HTML-Code einfach mit einem SCHLIESSENDEN </form>.
Jaja, kannst du glauben. Ich mein das wirklich so.

tomsen81 ·

Das nenn ich ja mal eine promte Hilfe!
:-)
Habs gleich ausprobiert und es funktioniert (erste Variante)!

@just2b: könntest du mir bitte noch verraten, wo die betreffende Zeile drinsteht?

Auf jeden Fall habt ihr mir sehr geholfen!

Grüße
Tom