stephan: Upload Problem

Hey,

ich habe ein Problem mit folgendem Code, der dazu da sein soll, eine Datei upzuloaden. Ich teste das Ganze auf einem XAMPP-System. Warum funktioniert das nicht?

Hier erstmal der HTML-Teil:

<form action='<? echo $_SERVER['PHP_SELF'].'?site=dateimanager&'.$_SERVER['QUERY_STRING']; ?>' method='post' enctype='multipart/form-data' name='form1' id="form1">
        Dateiupload:&nbsp;&nbsp;<input type="hidden" name="flag1" id="flag1" value="1">
<input type="file" name="datei">
         &nbsp;&nbsp;|&nbsp;&nbsp;
<input type="submit" name="Submit" value="Hochladen">
</form>

Und jetzt der PHP-Teil ($uvz ist der Verzeichnisname test/upload; newfilename überprüft, ob der Dateiname bereits existiert und hängt ggf. ein (1) bis (n) dran):

if (isset($_POST['flag1'])) {

extract($_POST);

//Und dann checken ob überhaupt eine Datei ausgewählt wurde
    if(!isset($datei)){$error = "Keine Datei gewählt!";}
    //Das Ganze in die Variable $error
    //--------------------------------------------------------
    if(!$error) {
       $name=$uvz.$datei; // Dateiname inkl. Verzeichnis, in das kopiert werden soll

$name = newfilename($name, 1); //Wenn nicht vorhanden, dann anlegen

//mkdir($name,0755); //mit den entsprechenden Rechten versehen

//Kopieren der Datei auf den Server
       copy($datei,$name);//  <-------RICHTIG MACHEN! KOPIERFUNKTION EINFÜGEN

}
    //--------------------------------------------------------------------
}

Vielen Dank schon mal

STEPHAN

  1. Jetzt hab ich ganz die Fehlermeldung vergessen:

    Warning: copy(testdatei.zip) [function.copy]: failed to open stream: No such file or directory in C:\xampp\htdocs\uploadtest\dateiupload.php on line 140

    Danke! :D

    STEPHAN

  2. Hallo Stephan,

    Der Fehler deutet darauf hin, dass es das Verzeichnis in das du Speichern willst nicht gibt.

    Dein Code ist nicht sonderlich sauber. Versuch es doch mit dem offiziellen Dateiupload Tutorial: http://de3.php.net/manual/de/features.file-upload.php

    Gruß,
    Severin

    --
    They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
    -- Benjamin Franklin
    1. Hey,

      alles darauf umgestellt, doch nun bekomme ich folgende Fehlermeldung:

      Possible file upload attack!  Here's some debugging info:
      Array
      (
      )

      Ist es möglich, dass einfach der Dateiname/Pfad nicht richtig gesendet wird? Kann das in dem Fall an XAMPP liegen?

      Danke!

      STEPHAN

      1. Hallo stephan,

        Ist es möglich, dass einfach der Dateiname/Pfad nicht richtig gesendet wird? Kann das in dem Fall an XAMPP liegen?

        Kannst du deinen neuen Code noch einmal komplett posten? Die Fehlermeldung zeigt an, dass das angehaenge Bild nicht an den Server uebermittelt wird. Ein populaerer Fehler ist beim Formular das enctype="multipart/form-data" zu vergessen.

        Gruß,
        Severin

        --
        They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
        -- Benjamin Franklin
        1. Hey,

          also der Code sieht so aus:

          print "<pre>";
          if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) {
              print "File is valid, and was successfully uploaded.  Here's some more debugging info:\n";
              print_r($_FILES);
          } else {
              print "Possible file upload attack!  Here's some debugging info:\n";
              print_r($_FILES);
          }

          und dann das als Eingabe:

          <form enctype="multipart/form-data" action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
                  Dateiupload:&nbsp;&nbsp;<input type="hidden" name="flag1" id="flag1" value="1">
                  <input name="userfile" type="file">
                   &nbsp;&nbsp;|&nbsp;&nbsp;
                  <input type="submit" name="Submit" value="Hochladen">
                  </form>

          Danke!

          STEPHAN

          1. Hallo,

            Hast du $uploaddir gesetzt? Es scheint irgendeine Kleinigkeit zu sein. Ist das alles was in deiner Datei steht?

            Gruß,
            Severin

            --
            They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
            -- Benjamin Franklin
            1. Hey,

              sry, das ist ja echt dumm -.- Man müsste eben nicht noch ein Rest- </form> drin haben, das zu viel ist und von einem bereits gelöschten Formular stammt -.-

              Vielen Dank dennoch für Deine Mühe!!!

              STEPHAN