Ankündigung

Einklappen
Keine Ankündigung bisher.

Dateien mit PHP Hochladen

Einklappen

Neue Werbung 2019

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

  • Dateien mit PHP Hochladen

    Heute erkläre ich Ihnen wie Sie es schaffen, eine Datei mit PHP hochzuladen.

    Das Formular

    Mit diesem Formular können die Dateien ausgewählt werden.
    PHP-Code:
    <form enctype="multipart/form-data" action="upload.php" method="post">
    <
    input type="hidden" name="MAX_FILE_SIZE" value="100000">
    Wählen Sie eine Datei die hochgeladen werden soll: <input name="userfile" type="file">
    <
    input type="submit" value="Upload Datei">
    </
    form
    Das versteckte Feld MAX_FILE_SIZE beinhaltet die Maximale Größe der Datei. Es kann nicht größer sein als 2 MB (Standart). Damit der Gast es nicht ändern kann, ist es versteckt. Allerdings ist dies nicht so sicher, daher ist es besser, wenn du es direkt in der PHP Abfrage einträgst!

    Mit Dateien umgehen

    PHP speichert alle Informationen der datei in dem $_FILES Array.

    PHP-Code:
     $_FILES['userfile']['name'
    Das ist der Orginalname der Datei.

    PHP-Code:
     $_FILES['userfile']['type'
    Der MIME Typ (z.B. Gif) wird hier gespeichert.

    PHP-Code:
     $_FILES[\'userfile\'][\'size\'] 
    Die Größe in Bytes.

    PHP-Code:
     $_FILES[\'userfile\'][\'tmp_name\'] 
    Der Name, wie die Datei auf dem Server heißt.

    PHP-Code:
     $_FILES[\'userfile\'][\'error\'] 
    Gibt den Fehler an. ['error'] gibt es erst ab PHP 4.2.0.

    Die Dateien werden in einem TMP Ordner des Webspaces zwischengespeichert, wenn Sie es permanent Speichern wollen, dann müssen sie move_uploaded_file() benutzen.

    PHP Code

    Hier ist der Code wie ein Upload aussehen kann:
    PHP-Code:
    <?php
    $uploadDir 
    '/var/www/uploads/';
    $uploadFile $uploadDir $_FILES['userfile']['name'];
    echo 
    "<pre>";
    if (
    move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile))
    { echo 
    "Datei ist in Ordnung und Sie wurde erfolgreich hochgeladen.";
    echo 
    "Hier sind die Fehler informationen:\n";
    print_r($_FILES);
    }
    else
    {
    echo 
    "Es wurde ein Fehler gemeldet!\nHier sind die Fehler informationen:\n";
    print_r($_FILES);
    }
    echo 
    "</pre>";
    ?>
    Tutorial von Web-Banana.net | Resource for the Webmaster
    Kostenlose Homepage
    Kostenlose Scripts
    Kostenloser Uploadservice

  • #2
    PHP-Code:
    <?php if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile))
    { echo 
    "Datei ist in Ordnung und Sie wurde erfolgreich hochgeladen.";
    echo 
    "Hier sind die Fehler informationen:\n";
    print_r($_FILES);
    }

    ?>
    </blockquote>Warum gibst du Fehlerinformationen aus, wenn die Datei erfolgreich hochgeladen wurde?

    Kommentar


    • #3
      Ich hab noch ne Frage, wo du mir vielleicht am Besten wieterhelfen könntest. Da ich das aber nicht in diesen Thread stellen wollte, findest du sie hier.

      Liebe Grüße
      Heizkessel

      Kommentar


      • #4
        Wieso übergibst du MAX_FILE_SIZE wenn du die Variable dann nicht mal verwendest? Das Beispiel sollte schon zum Tutorial passen

        Kommentar


        • #5
          Das mit dem MAX_FILE_SIZE Hidden Input ist so ein komischer verbreiteter Mythos, den man, wenn ich richtig informiert bin, mal in Browser einbauen wollte, sodass das Formular gar nicht erst abgeschickt wird, wenn die Grösser der Datei grösser ist als der Value des Hidden Inputs. Die Idee kommt daher, dass sich die Seite, die den Upload vornimmt, aufhängt, wenn die Datei grösser als die in der php.ini angegebene Limite ist, was natürlich nicht sehr schön ist, wenn dann eine Fehler-Seite kommt. Soweit ich weiss, nützt das Hidden Input aber nix, aber vielleicht kann mich jemand eines besseren belehren.

          Kommentar


          • #6
            Nein das nützt gar nichts, denn die Datei wird zuerst in den Temp php Ordner hochgeladen, und dann werden die Variablen erst an die PHP Datei weiter gegeben.

            Kommentar


            • #7
              Zitat von deeg Beitrag anzeigen
              Nein das nützt gar nichts, denn die Datei wird zuerst in den Temp php Ordner hochgeladen, und dann werden die Variablen erst an die PHP Datei weiter gegeben.
              Die Variable ist ja auch nicht für PHP Gedacht sondern für den Client (Browser). Die Variable funktioniert wirklich nicht.

              Kommentar


              • #8
                Und PHP wertet sie trotzdem aus, wenn sie vorhanden ist.
                PHP: Error Messages Explained - Manual
                UPLOAD_ERR_FORM_SIZE
                Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.
                Neben ein paar anderen Sachen haben ich allerdings gerade mit
                Zitat von h3ir Beitrag anzeigen
                Das versteckte Feld MAX_FILE_SIZE beinhaltet die Maximale Größe der Datei. Es kann nicht größer sein als 2 MB (Standart). Damit der Gast es nicht ändern kann, ist es versteckt.
                Probleme. Erstens "Standard" und zweitens "2MB"? Warum das denn?

                Kommentar


                • #9
                  So geht es...

                  <?php
                  $uploadDir = '../img/';
                  $uploadFile = $uploadDir . $_FILES['userfile']['name'];

                  if (!move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile)) {
                  switch ($_FILES['userfile'] ['error']) {
                  case 1: print '<p>Die Datei ist größer als diese PHP installation erlaubt!</p>'; break;
                  case 2: print '<p>Die Datei ist größer als dieses Formular erlaubt!</p>'; break;
                  case 3: print '<p>Nur ein Teil dieser datei wurde hochgeladen!</p>'; break;
                  case 4: print '<p>Es wurde keine Datei hochgeladen!</p>'; break;
                  }
                  } else {
                  echo "<script language='JavaScript'>history.back();</script>";
                  }
                  ?>

                  Kommentar


                  • #10
                    geklaut

                    @h3ir: was soll der schwachsinn - willst du uns zeigen, wie fortschrittlich du aus dem php-handbuch abschreiben kannst?

                    hier befindet sich die vorlage / das original deines tutorials: PHP: Dateiuploads mit POST - Manual

                    bis du unglaublich dumm oder ganz einfach stinkend dreist?

                    cx

                    [edit] ach gottchen... der thread ist ja horn-alt. am ende war er noch der author auf php.net

                    cx

                    Kommentar

                    Lädt...
                    X