Partner & Ads


media-products.de Partner-Banner
scripthosting.net Partner-Banner

Codeschnipsel

Zurück zur Übersicht

Dateien per PHP auf den Server laden

Fragen oder Anmerkungen zum diesem Codeschnipsel?
Im zugehörigen Diskussionsthema im Support-Forum wird Ihnen weitergeholfen!

Ausgangspunkt um Dateien direkt im Browser auf den eigenen Server hochladen zu können, ist ein einfaches HTML-Formular mit einem speziellen Eingabefeld vom Typ file:

<form enctype="multipart/form-data" action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="post">

<input type="file" name="userfile" />

<input type="hidden" name="send" value="1" />
<input type="submit" value="Datei hochladen" />
</form>

Nun fehlt noch der PHP-Code, der nach dem Absenden des Formular die Datei auf dem Server an der richtigen Position abspeichert.
Es ist zu beachten, dass im vorliegenden Beispiel der original Dateiname der Quelldatei auch auf dem Server erhalten bleibt. Im produktiven Einsatz ist dieses Vorgehen nicht zu empfehlen, da dadurch beispielsweise von verschiedenen Benutzern keine Dateien mit identischem Dateinamen hochgeladen werden könnten.
Es bietet sich deshalb zum Beispiel an mit time() den aktuellen Timestamp als Dateiname zu verwenden.

<?PHP
if(isset($_POST['send']) && $_POST['send'] == "1"){
    //Pfad zum Ordner, in dem die Datei gespeichert werden soll
    //Dieser Ordner muss Schreibrechte besitzen (Chmod 777)
    $uploaddir = 'upload/';

    // An dieser Stelle sollten im Produktivbetrieb weitere Ueberpruefungen der hochgeladenen Datei erfolgen
    // U.a. Dateiendungen, max. Size etc.

    // Diese Zeile sorgt dafür, dass die hochgeladene Datei im richtigen Verzeichnis landet.
    // $_FILES['userfile']['name'] ist der Dateiname, mit dem die Datei gespeichert wird.
    if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])){
        echo "Datei erfolgreich hochgeladen";
        }
    else{
        echo "Fehler beim Hochladen der Datei. Fehlermeldung:\n<br />";
        print_r($_FILES);
        }
    }
?>

Beachten Sie auch, dass das gewünschte Upload-Verzeichnis die Chmod-Rechte 0777 besitzen muss.
Für den Upload bzw. die Überprüfung des Uploads stehen mit $_FILES noch weitere Variablen zur Verfügung:

  • $_FILES['userfile']['name']
    Dateiname+Endung, der hochgeladen Datei
  • $_FILES['userfile']['type']
    Mime-Type z.B image/gif"
  • $_FILES['userfile']['size']
    Größe der Datei
  • $_FILES['userfile']['tmp_name']
    Temporärer Dateiname, unter dem die Datei auf dem Server zwischengespeichert wurde.
  • $_FILES['userfile']['error']
    Fehlercodeausgabe (ab PHP 4.2.0)

Der gesamte Quellcode des Codeschnipsels sieht folgendermaßen aus:

Weiterführende Informationen

Timestamp
Ein Zeitstempel (engl. timestamp) ist ein Wert in einem definierten Format, der einem Ereignis (beispielsweise dem Senden oder Empfangen einer Nachricht, der Modifikation von Daten u.a.) einen Zeitpunkt zuordnet. Der Zweck eines Zeitstempels ist es, für Menschen oder Computer deutlich zu machen, wann welche Ereignisse eintraten. Wenn es auf einen genauen Zeitpunkt nicht ankommt, kann auch lediglich die Reihenfolge der Ereignisse gespeichert werden. Die am weitesten verbeitete Art von Zeitstempel ist wohl die Unixzeit, welche die Anzahl der Sekunden seit dem 1. Januar 1970 00:00 Uhr GMT angibt.

Dies ist ein Auszug aus dem Artikel Timestamp aus der freien Enzyklopädie Wikipedia und steht unter der GNU-Lizenz für freie Dokumentation. In der Wikipedia ist eine Liste der Autoren verfügbar.

Zurück zur Übersicht

Zum Diskussionsthema
Download
Git

Dieser Beitrag ist unter der Creative Commons Namensnennung 3.0 Deutschland lizensiert.
Bearbeitung, Nutzung & Verbreitung ist ausdrücklich gestattet.