Dateien mit PHP Hochladen

Das Forumlar

Mit diesem Formular können die Dateien ausgewählt werden.

<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.

Mit Dateien umgehen

PHP speichert alle Informationen der datei in dem $_FILES Array.
$_FILES['userfile']['name']
Das ist der Orginalname der Datei.
$_FILES['userfile']['type']
Der MIME Typ (z.B. Gif) wird hier gespeichert.
$_FILES['userfile']['size']
Die Größe in Bytes.
$_FILES['userfile']['tmp_name']
Der Name, wie die Datei auf dem Server heiÃ?t.
$_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
$uploadDir = '/var/www/uploads/';
$uploadFile = $uploadDir . $_FILES['userfile']['name'];
print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile))
{ print "Datei ist in Ordnung und Sie wurde erfolgreich hochgeladen.";
print "Hier sind die Fehler informationen:
";
print_r($_FILES);
}
else
{
print "Es wurde ein Fehler gemeldet!
Hier sind die Fehler informationen:
";
print_r($_FILES);
}
print "</pre>";
?>

Kommentare

unkie
unkie am Samstag, 23. Juli 2005 um 16:14

du weißt aber wie leicht es ist trotz allem files mit z.B 5GB hochzuladen? mach das max-filesize besser direkt im Code bzw. wo wird geschaut ob der File nicht größer ist? Also das ist ein koisches tut ...

Markus René Einicher
Markus René Einicher am Sonntag, 24. Juli 2005 um 20:11

Das Tut gibts auch schon von mir hier.

Und nein, du kannst keine 5GB hochladen, weil das Skript nach 300 Sekunden vollzogen sein muss (außer man hat das in der php.ini höher gesetzt), ansosnten bricht PHP den Vorgang ab.

Taka
Taka am Donnerstag, 11. August 2005 um 14:05

Waren das nicht 30 Sekunden ;)

Eichhornleib
Eichhornleib am Freitag, 9. Dezember 2005 um 21:40

Ja es sind normaler weise 30 Sekunden....