Dateien mit PHP Hochladen
Das ForumlarMit 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
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 ...
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.
Waren das nicht 30 Sekunden ;)
Ja es sind normaler weise 30 Sekunden....