CSV-Upload in einem Backend-Modul - Prolem mit $_FILES

  • berndy38 berndy38
    T3PO
    0 x
    12 Beiträge
    0 Hilfreiche Beiträge
    18. 08. 2004, 16:28

    Hallo zusammen,

    ich schreibe gerade an einer Extension.
    In der Datei für das Backend möchte ich eine CSV-Datei hochladen.
    Das Formular funktioniert perfekt, wenn ich es in der PHP-Script-Extension erstelle.
    Anscheinend hat er Probleme mit der Variabklen $-FIILES.

    Wer kann mir da helfen.

    Vielen Dank schon mal.

    Gruß Bernd


  • 1
  • maxhb maxhb
    Flash Gordon
    0 x
    2148 Beiträge
    0 Hilfreiche Beiträge
    18. 08. 2004, 17:20

    Hi!
    Lass Dier doch mal in der Extension die Postvariablen ausgeben, um zu sehen, ob die überhaupt korrekt übermittelt werden:
    [code:1:306e1a77d4]...
    t3lib_div::debug($_POST);
    ...[/code:1:306e1a77d4]

    CU
    maxhb

  • TW TW
    Jedi-General
    0 x
    1560 Beiträge
    0 Hilfreiche Beiträge
    18. 08. 2004, 18:36

    gib doch mal bitte eienn auszug aus deinem script.....

    da kann man dann leichter was sagen..

    cu
    thorsten

  • berndy38 berndy38
    T3PO
    0 x
    12 Beiträge
    0 Hilfreiche Beiträge
    19. 08. 2004, 13:57

    Hallo zusammen,

    danke für eure Antworten.

    Hier ist mein Code:
    [code:1:a18702b9de]
    if (!isset($_POST["csv_upload"])) {
    $content.="<form action='".$_SERVER["REQUEST_URI"]."' method='post' enctype='multipart/form-data'>
    <input type='hidden' name='MAX_FILE_SIZE' value='30000'>
    Send this file: <input name='userfile' type='file'>
    <input type='submit' value='Send File' name='csv_upload'>
    </form>";
    }
    else {
    t3lib_div::debug($_POST);
    t3lib_div::debug($_FILES);
    }
    [/code:1:a18702b9de]

    Wenn ich diesen Code in das Content-Element PHP-Script reinschreibe und anschließend eine Datei hochlade steht folgendes drin:

    in der Varialen $_POST:
    [code:1:a18702b9de]
    MAX_FILE_SIZE 30000
    csv_upload Send File
    [/code:1:a18702b9de]
    in der Variablen $_FILES:
    [code:1:a18702b9de]
    name Test.csv
    type application/vnd.ms-excel
    tmp_name /tmp/phps3lfXw
    error 0
    size 267
    [/code:1:a18702b9de]

    Aber wenn ich den selben Code in mein Backend-Modul einbau erscheint folgendes:
    In der $_POST:
    [code:1:a18702b9de]
    SET function 2
    MAX_FILE_SIZE30000
    userfileTest.csv
    csv_upload Send File
    [/code:1:a18702b9de]
    Die Variable $_FILES ist "empty" also leer.

    Gruß Bernd


  • 0 x
    12. 09. 2005, 14:28

    Hallo Bernd,

    habe genau das gleiche Problem, leider aber noch keine Lösung... bist du schon weitergekommen?? Ich studiere gerade den EM, der ja auch ein Uploadform beinhaltet und ebenso ein BE-Modul ist - aber bis jetzt habe ich noch keinen Unterschied zwischen deiner, meiner und der Programmierung des EMs gesehen ... warum funzt der Upload von Extensions also mit $_FILES, nur bei der eigenen Extension wollen keine Daten per $_FILES rüberwachsen ...!?!?

    Grüße,
    Commodore


  • 0 x
    13. 09. 2005, 08:04

    hi leute,
    hatte auch mal das problem. das entscheidene bei mir war die zeile 5 (move_uploaded_file). dadurch wird die datei in den mod1 ordner kopiert und kann dann gelesen werden.

    vielleicht hilft es euch ja!?

    1. if(isset($_FILES['datei'])){
    2. if($_FILES['datei']['type']=="application/vnd.ms-excel"){
    3. $regExp = "/^[a-z_]([a-z0-9_-]*\.?[a-z0-9_-])*\.[a-z]{3,4}$/i";
    4. if(preg_match($regExp,$_FILES['datei']['name']) && $_FILES['datei']['size'] > 0 && $_FILES['datei']['size'] < 100000){
    5. move_uploaded_file($_FILES['datei']['tmp_name'],$_FILES['datei']['name']);
    6. $csv=file($_FILES['datei']['name']);
    7. ...

    mfg
    tom

  • justus7031 justus703...
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    03. 10. 2005, 15:32

    Hallo,

    ich habe das gleiche Problem. in $_POST steht der Dateiname aber $_FILES ist leer.
    Die Lösung von "friction48" nützt nichts, denn in $_FILES steht ja keine Datei, die man moven könnte.

    Ich habe schon 2 andere Extensions auseinander genommen, die offendsichtlich die Upload korrekt behandeln können.

    Aber ich finde nichts, was bei meinem Modul hilft.

    Hat von euch inzwischen jmd was rausgefunden?
    Bin für jeden Tipp dankbar!

    Gruß
    Tobias

  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    03. 10. 2005, 16:11

    In deinem form - Tag wird sicherlich das hier fehlen:
    enctype="multipart/form-data"

    jenses

  • justus7031 justus703...
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    03. 10. 2005, 19:20

    Guter Tipp!

    Ich hatte zwar in meinem Form diesen enctype angegeben, aber es gab im main() meines BE-Moduls noch eine weiteres <form>, dass nicht wieder geschlossen wurde. Dieses ist wohl für das kleine Dropdown das immer oben rechts steht zuständig.
    Dieses <form> also wurde nicht wieder geschlossen UND hatte ausserdem eben diesen "enctype" nicht.
    Der Browser hat dann wohl diesen als relevantes <form>-Tag interpretiert.

    Das erklärt auch einige andere merkwürdigkeiten, nicht so funktionieren, wie ich es erwartet hätte (z.b. im action="" mitgegebene GET-Parameter, die einfach nicht übergeben wurden)

    Man nach sowas kann man ja lange suchen :-)

    Dank + Gruß
    Tobias

  • 1