Karl: move_uploaded_file

Hallo,

Ich habe einen bildupload in PHP geschrieben, stehe jetzt allerdings vor dem Problem, daß es bei manchen jpgs ohne Probleme funktioniert bei anderen widerum bekomme ich eine Fehlermeldung daß die Datei nicht hochgeladen werden konnte...mittlerweile habe ich festgestellt das file['tmp_name'] als variable bei manchen jpgs nicht da ist...Ich habe überhaupt kein Plan warum, noch was ich dagegen tun kann...kann mir jemadn helfen ? bin total ratlos...

Gruss

  1. Hi,

    na ja, etwas Quellcode könnte sicherlich nicht schaden, als insbesondere das Upload-Formular und die relevanten Zeilen des Empfänger-Skriptes.

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. HTML :

      <form enctype="multipart/form-data" action="index.php4?mode=upload" method="POST">
      Bild <input name="file" type="file">

      Skript :

      $fileName=$fileName."_".$file['name'];

      $uploadFile = $uploadDir . $fileName;

      if (move_uploaded_file($file['tmp_name'], $uploadFile)) {

      chmod($uploadDir.$fileName,0766);
        echo "Upload erfolgreich";
       }
       else
       {
        echo "Fehler";
       }

      1. Hi!

        HTML :

        <form enctype="multipart/form-data" action="index.php4?mode=upload" method="POST">
        Bild <input name="file" type="file">

        Skript :

        $fileName=$fileName."_".$file['name'];

        $uploadFile = $uploadDir . $fileName;

        if (move_uploaded_file($file['tmp_name'], $uploadFile)) {

        chmod($uploadDir.$fileName,0766);
          echo "Upload erfolgreich";
        }
        else
        {
          echo "Fehler";
        }

        Dieses Skript lässt beinahe keinen Fehler aus, den man nicht machen sollte. Hier mal eine kurze Auflistung:

        • register_globals=on
        • Man kann jeden Mist raufladen, ohne dass eine Überprüfung des Mime-Typs stattfindet
        • ein chmod 0766 ist mit Sicherheit nicht nötig, hier sollte ein 0644 reichen

        Für alles weitere sei dir ein Blick ins Manual empfohlen. Versuche die Ratschläge dort umzusetzen und zeige uns dann das Ergebnis, falls es immer noch nicht funktionieren sollte.

        Grüße,
        Fabian St.

        1. Ja das Ding, auch wenn mies gemacht, funktioniert ja, aber nur bei
          manchen Dateien, für machen gibt es kein tmp_name das liegt ja nun nicht an den globals oder an den rechten...

      2. Also,

        Bild <input name="file" type="file">

        Das ist mal ein sehr ungünstiger Name für das Feld. Ich sag nicht, dass das nicht geht, ich sage nur, es schreit danach ein Problem zu machen.

        $fileName=$fileName."_".$file['name'];
        if (move_uploaded_file($file['tmp_name'], $uploadFile)) {

        Hier verlässt du dich darauf, dass $file von PHP vorbelegt wurde, baust also auf dem alt-hergebrachten REGISTER_GLOBALS auf. Das solltest du ebenfalls nicht tun. Verwende stattdessen die superglobalen Variablen $_GET[] bzw. $_POST[] für Formulareingaben und $_FILE für hochgeladene Dateien.
        Ansonsten sieh dich mal in der PHP-FAQ um, da stehen auch Verarbeitungsmethoden für mehrere Dateien etc.

        MfG
        Rouven

        --
        -------------------
        ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
      3. hi,

        $fileName=$fileName."_".$file['name'];

        Verlasse dich nicht auf register_globals=on, sondern nutze besser $_FILES.

        Was sagen denn das access- und das errorlog des Servers aus in den Fällen, wo so ein Upload fehlschlägt?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hello,

    Ich habe einen bildupload in PHP geschrieben, stehe jetzt allerdings vor dem Problem, daß es bei manchen jpgs ohne Probleme funktioniert bei anderen widerum bekomme ich eine Fehlermeldung daß die Datei nicht hochgeladen werden konnte...mittlerweile habe ich festgestellt das file['tmp_name'] als variable bei manchen jpgs nicht da ist...Ich habe überhaupt kein Plan warum, noch was ich dagegen tun kann...kann mir jemadn helfen ? bin total ratlos...

    Als erstes sollte man auch immer $_FILES['feldname']['error'] abbragen, was drinsteht und es auswerten.

    Harzliche Grüße vom Berg
    esst mehr http://www.harte-harzer.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau