Fehler beim upload einer Datei

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fehler beim upload einer Datei

    Grüße!

    Ich versuche mom ein Skript zu schreiben mit dem ich eine Datei auf dem Server hochladen kann. Leider funktionert das verschieben vom Temp. Ordner in den Zielordner nicht richtig. Zuerst habe ich die Funktion move_uploaded_files() verwendet. Aber ich hab beim abarbeiten des Skripts keine Fehlermeldung bekommen, es wurde nur einfach nicht ausgeführt. Jetzt versuche ich es mit der copy() Funktion bin mir aber nicht sicher wie ich dabei das Quellverzeichnis angeben kann. Hier ist der code:

    PHP-Code:
     
    [LEFT]if(isset($_FILES["datei"])) {

    echo 
    "Datei hochgeladen <br>";

    if(
    $_FILES["datei"]["error"] == UPLOAD_ERR_OK) { 
    echo 
    "Datei ohne Fehler<br>"
    if (
    $_FILES["datei"]["size"] <= 100000) {

    $file $_FILES["datei"]["temp_name"];
    $new_dir "/upload";
    $name $_FILES["datei"]["name"];

    copy($file,"$new_dir/$name");
    //move_uploaded_file($file,"$new_dir/$name");

    echo "Datei gespeichert.<br>";
    }
    else {
    echo 
    "Fehler bei der Göße der Datei<br>";
    }
    }
    else {
    echo 
    "Fehler beim Upload.<br>";
    }[/
    LEFT]

    Hoffe ihr findet den Fehler.
    Grüße shimu
    Zuletzt geändert von Shikamaru; 13.04.2010, 14:47.

  • #2
    Hallo,

    du solltest weiterhin move_uploaded_file verwenden, das Error-Reporting auf Maximum hochdrehen und die Verzeichnisrechte des Zielverzeichnisses überprüfen.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Zunächst mal lass diesen Blödsinn:
      PHP-Code:
      copy($file,"$new_dir/$name"); 
      Das schreib man so:
      PHP-Code:
      copy($file,$new_dir.'/'.$name); 
      Wie sieht denn dein error_reporting aus? Schau dir ggf. mal das Tutorial an, da geht es auch um Dateiuploads. Und die häufigsten Rechteprobleme.

      Peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Danke für die schnellen Antworten. Hab jetzt den Code dem Tutorial angepasst. Leider funktioniert das speichern noch immer nicht.
        Auch beim durchsehen des error und access logs hab ich nichts entdeckt.
        Ich hab schreib auf einem Windowssystem, wie sieht es da mit den Rechten aus?

        Hier noch mal die angepasste Version:
        PHP-Code:
        [LEFT]if(isset($_FILES["datei"])) {

        echo 
        "Datei in Temp.ordner.<br>";

        if(
        $_FILES["datei"]["error"] == UPLOAD_ERR_OK) { 
        echo 
        "Datei ohne Fehler<br>"
        if (
        $_FILES["datei"]["size"] <= 100000) {

        $file $_FILES["datei"]["temp_name"];
        $dir "/upload";
        $name $_FILES["datei"]["name"];

        if(
        is_dir($dir)) {
        $folder true;
        }
        else {
        $folder mkdir($dir);
        }
        if (
        is_uploaded_file($file) && $folder) { 
        if(
        move_uploaded_file($file$dir.'/'.$name)) {
        echo 
        "Datei gespeichert.<br>";
        }
        else {
        echo 
        "Leider nein.";
        }
        }
        }
        else {
        echo 
        "Fehler bei der Göße der Datei<br>";
        }
        }
        else {
        echo 
        "Fehler beim Upload.<br>";
        }[/
        LEFT]

        Kommentar


        • #5
          Du hast uns noch immer nicht gesagt, wei dein error_reporting eingestellt ist. Denn aller Vorraussicht nach hast du ein Rechteproblem.

          Peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Hier ist mein error_reporting:

            error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

            edit:
            Hab jetzt etwas herumgespielt und bin auf folgendes draufgekommen:
            In der Zeile
            $file
            [COLOR=#660000][COLOR=#660000] [/COLOR][/COLOR]= [COLOR=#660000][COLOR=#660000]$_FILES[/COLOR][/COLOR][[COLOR=#008200][COLOR=#008200]"datei"[/COLOR][/COLOR]][[COLOR=#008200][COLOR=#008200]"temp_name"[/COLOR][/COLOR]];
            wird auf $file kein Wert gespeichert. Dh ich hab versucht die Variable auszugeben aber es gibt keine ausgabe. Weiss jemand woran das liegen kann?
            Zuletzt geändert von Shikamaru; 13.04.2010, 15:52.

            Kommentar


            • #7
              Hab jetzt eine Lösung gefunden die funktioniert. Ich hab das Array $_FILES in ein anderes Array $file gespeichert. Und dann mit diesem Array weitergearbeitet. Erst dann hat es funktioniert. Kann mir jemand erklären wieso das ich keinen speziellen Wert auslesen konnte aber das komplette Array kopieren konnte?

              Kommentar


              • #8
                Das ergibt keinen Sinn. Vielleicht hast du damit nur zufällig einen Fehler im Code behoben, den du vorher drin hattest?

                Es heißt übrigens tmp_name, nicht temp_name, vielleicht war es das?
                Zuletzt geändert von AmicaNoctis; 13.04.2010, 16:24.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  Ja, genau das wars. Hab kurz bevor ich nach hause ging noch mals das $_FILE array angeschaut und gesehen dass ich den key falsch geschrieben hab...
                  Jetzt ist wieder alles so umgestellt dass es mit dem globalen Array arbeitet und ohne hilfe eines 2ten.
                  Danke für die Hilfe.

                  so long

                  Kommentar

                  Lädt...
                  X