Der Upload via PHP ist sicher etwas, das man immer wieder brauchen kann. Außerdem funktioniert es mit PHP ziemlich einfach, deswegen mal ein kurzes Tutorial dazu. Grundwissen in PHP und HTML wird vorausgesetzt.
Zuerst brauchen wir ein Formular, in dem der Benutzer eine Datei auswählen kann, welche hochgeladen werden soll. Ich werde hier einfach den Quelltext reinschreiben, da der HTML-Part klar sein sollte:
Code :
1 2 3 4 | <form enctype="multipart/form-data" action="http://www.tutorials.de/upload.php" method="post">
<input type="file" name="file"><br>
<input type="submit" value="hochladen">
</form> |
Ganz wichtig ist noch, dass der Name des Upload Eingabefeldes <input type="file" [...]> nicht "file" sein muss, aber just dieser Name ist der, der in den folgenden Zeilen Code immer in der ersten Klammer nach $_FILES steht.
PHP-Code:
<?php
$tempname = $_FILES['file']['tmp_name'];
$name = $_FILES['file']['name'];
Die Variable $name enthält den Dateinamen, den die Datei auf dem Clientrechner hatte.
Jetzt könnte man eigentlich schon die Datei an die gewünschte Stelle verschieben, allerdings ist es ziemlich gefährlich ein Upload Script ohne Einschränkungen im Netz stehen zu haben. Kommt da der falsche User drauf, ist der Webspace am nächsten Tag evtl. schon voll mit evtl. nicht ganz legalem Material. Es ist also nur in eurem Interesse, wenn ihr die upgeloadete Datei überprüft.
PHP-Code:
$type = $_FILES['file']['type'];
$size = $_FILES['file']['size'];
PHP-Code:
if($type != "image/gif" && $type != "image/pjpeg") {
$err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.";
}
if($size > "15000") {
$err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";
}
Hier ein kleiner Einschub. Wir wissen also, das die Datei bereits auf dem Server liegt, wenn der Benutzer auf den "hochladen" Button klickt. Auch wenn die Datei zu gross ist, der Typ nicht dem entspricht den wir wollen, etc. Allerdings ist das ganze upload System so schlau aufgebaut, das die Tempdatei nach dem upload automatisch gelöscht wird, das heisst, wenn die Datei nicht anderswo hinkopiert wird, löscht der Server sie automatisch nach abarbeiten des Scripts. Diese Eigenschaft ist sehr praktisch und erspart uns viel Arbeit. Wenn unsere Prüfungen auf Grösse und Typ der Datei ein negatives Ergebnis liefern, kopieren wir Sie einfach nirgendwo hin, und sie wird automatisch gelöscht.
PHP-Code:
if(empty($err)) {
copy("$tempname", "$name");
echo "Die Datei $name wurde erfolgreich hochgeladen!";
}
else {
foreach($err as $error)
echo "$error<br>";
}
?>
Möglicher Fehler:
Wenn man in ein Verzeichnis hochzuladen versucht, in dem der Browser keine Schreibrechte hat, wird das zwangsläufig zu einem Fehler führen, beachtet also in welches Verzeichnis ihr die Dateien speichern wollt.
Das Verzeichnis wohin die Datei hochgeladen wird, sollte nicht absolut angegeben werden, sondern vom "Standpunkt" des upload.php scripts aus. Wenn also ins selbe Verzeichnis hochgeladen wird, indem sich auch die upload.php Datei befindet, wäre der Pfad einfach "$name".
Das wars, zum Grundgerüst des uploads. Bei Fragen, Unklarheiten und Korrekturen, PM an mich.
antihero



Kommentar schreiben

Bereiche
Kategorien
Forum - Programming





Artikel bewerten