php-resource.de

PHP Tutorial: Dateien per Userinterface hochladen

Um Dateien per Userinterface hochladen zu können, benötigt man vergleichbar wenige Kenntnisse in der Programmiersprache PHP

|15.02.2004 | Lukas Beck | 11834 | KAT : PHP | | Kommentare 0


1

2

Zunächst ist es sinnvoll, zu überprüfen, ob die Einstellungen Ihres Providers oder auch Ihres eigenen (lokalen) Webservers einen PHP Upload zulassen. Zudem ist die maximal hochladbare Dateigröße durch die Befehlszeile UPLOAD_MAX_FILESIZE in der Datei PHP.INI, die Sie in Ihrem PHP Ordner finden, von Ihrem Provider oder Ihrer lokalen PHP.INI vorbestimmt, meistens mit 2MB oder auch 8MB. Über diese Größe hinaus können Sie dann keine Dateien hochladen.
Wobei gerade hier auch der Wert der Zeile POST_MAX_SIZE entscheidend ist.
Zudem muss natürlich der Upload generell zugelassen werden - auch diese Befehlszeile findem Sie in der PHP.INI - sie heisst FILE_UPLOADS und muss entsprechend auf ON gesetzt sein, damit Sie das Script anwenden können.
Auslesen können Sie diese Informationen, indem Sie die Funktion phpinfo(); auf dem Server ausgeben. Wenn Sie die Rechte haben, Änderungen an PHP.INI durchzuführen und dies beabsichtigen, so bedenken Sie, dass Sie, sofern Apache als Dienst läuft, diesen nach jeder Änderung neu starten müssen, damit die Änderungen wirksam werden.

Zunächst behandeln wir das grundsätzliche Formular, über das wir die Datei hochladen möchten. Dieses können wir, wie hier gezeigt ohne PHP ausgeben, da es sich um ein statisches Formular handelt. Somit entlasten wir den Server und erhöhen zudem die Ausgabegeschwindigkeit. Im FORM Tag wir angegeben, dass jedes beliebige Dateiformat hochgeladen werden kann. Mit dem HIDDEN Tag MAX_FILE_SIZE bestimmen wir, falls gewollt, die maximal hochladbare Dateigröße

<form enctype="multipart/form-data" action="upload.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="5000">
    <input type="file" name="datei"><br>
    <input type="submit" value="hochladen">
</form>

Kommen wir zum Teil des Uploads. Um zu verhindern, dass leere Dateizeilen an den Server gesendet werden, prüfen wir zunächst auf ein ausgefülltes Formular mittels der Funktion empty();

<?php
if(!empty($datei))
{
...
?>

Wir übergeben den Dateinamen, den wir mit $datei_name auslesen können an eine neue Variable $dateiname, was später noch eine nützliche Vorraussetzung für die Weiterverarbeitung des Scriptes ist.
Ist also das Formular ausgefüllt, so wird das Script weiterverarbeitet. Um zu vermeiden, dass wir ungewollt Dateien gleichen Names überschreiben, prüfen wir zunächst mit dem Befehl file_exists(); ob die Datei bereits vorhanden ist.
Hier kommt nun die Funktion check_datei(); zum Einsatz, die die Datei umbenennt, sollte sie bereits vorhanden sein. Auf die Funktion komme ich selbstverständlich genauer zurück, hierzu jedoch später im Tutorial mehr.

<?php
    $dateiname 
$datei_name;

if(
file_exists($datei_name))
{
check_datei();

echo 
"Die Datei mit dem Dateinamen <b>$datei_name</b> existierte bereits.<br> Ihre Datei wurde in
<b>$dateiname</b> umbenannt"
;
...
?>

Falls wir Gebrauch von einem HIDDEN Formularfeld machen, in dem wir die maximale Dateigröße bestimmen, testen wir an dieser Stelle, ob die Datei den Anforderungen entspricht. Die Größe der Datei lesen wir, wie schon bei $datei_name mit $datei_size aus - die Variable $datei kann natürlich variieren. Sollten wir keine Dateigrößenbegrenzung in unserem Script haben, können wir diesen Teil ignorieren, dennoch darf die Datei nicht größer sein, als in PHP.INI vordefiniert - diesen Wert können wir hier im Formular nicht beeinflussen. Beachten Sie jedoch, wenn Sie eine Beschränkung seitens PHP.INI von beispielsweise 2MB vordefiniert haben, so gibt das Script unter Umständen dem User keinen Fehler bezüglich einer zu großen Datei aus, der User weiss also nicht, wo der Fehler lag, da die Dateigröße von PHP.INI abgelehnt wurde. Es ist also sinnvoll, dieses HIDDEN Feld einzubauen, oder zumindest eine statische Angabe der maximalen Dateigröße zu machen, um den User nicht im Dunkeln zu lassen, falls dieser versucht, eine Datei größer als die Vordefinition, hochzuladen.
Merken Sie sich auch den Hinweis von PHP, dass die maximale Dateigröße MAX_FILE_SIZE lediglich ein Hinweis für den Browser ist und diese Grenze umgangen werden kann. Die PHP-Einstellungen für die maximale Dateigröße können nicht getäuscht werden. (php.net)

<?php
if($datei_size $MAX_FILE_SIZE)
{
echo 
"Die Datei ist zu groß, die maximale Dateigrösse beträgt $MAX_FILE_SIZE Byte(s)";
}
else
{
...
?>
Navigation -> Seitenanzahl : (2)

   1 2  » 
Kommentare zum Tutorial
Tutorial kommentieren
 
Über den Autor
Lukas Beck

Lukas Beck

Status
Premium Mitglied

Beruf
Unbekannt

Mitglied seit:
30.04.2009

letzte Aktivität
04.06.2009

 

Tutorial bewerten

Hat Ihnen dieses Tutorial gefallen? Dann bewerten Sie es jetzt! Fünf Sterne bedeutet "Sehr gut", ein Stern "Unzureichend".



 

aktuelle Artikel

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Neu | Berni

Wissensbestand in Unternehmen

Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Neu | Berni