Was, wenn Texte oder Bilder direkt vom Besucher entgegengenommen werden sollen? Runter kommen die Daten immer, für den Upload jedoch braucht es ein Script. Vom Eigenbau bis zur Luxusprogrammierung ist alles drin.
Ein einfaches Formular sorgt dafür, dass Besucher Daten vom eigenen Rechner auf einen Server hochladen können. Der Unterschied zum HTML-Formular ist ein Input-Feld vom Typ „file“ sowie der Enctype „multipart/form-data“. Mit <input type=“file“> wird das komplette Element für den Datei-Upload mit Eingabefeld und Button definiert. Mit „maxlength“ kann man die höchste erlaubte Dateigröße in Bytes angeben. Im Beispiel wird so die Dateigröße auf 30000 Bytes eingeschränkt. Fehlt das Attribut „maxlength“, können die Besucher der Website Daten jeder Größe hochladen. Noch sicherer ist ein spezielles CGI-Script, das entscheidet, ob die Datei zugelassen wird oder nicht.
<form enctype="multipart/form-data" action="_URL_"
method="post">
<code>
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Datei angeben:
<input name="userfile" type="file">
<br>
<br>
<input name="submit" type="submit" value="Datei
absenden">
</code>
</form>
So sieht das Formular aus:
Der Upload-Code
Das PHP-Skript muss die hoch geladene Datei empfangen und entscheiden, was mit der Datei geschehen soll.
<?php
$uploaddir = '/uploads/';
print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name']))
{
print "Die Datei wurde geprüft und erfolgreich hochgeladen.";
print_r($_FILES);
} else {
print "Datei-Upload fehlgeschlagen!";
print_r($_FILES);
}
?>
Frühere PHP-Versionen (unter 4.1) benötigen $HTTP_POST_FILES statt $_FILES und copy() mit is_uploaded_file() statt move_uploaded_file(). Klappt der Upload immer noch nicht ist es möglich, dass der Ordner mit dem Skript die Rechte „777“ haben muss. Hier ist eine entsprechende Modifikation, das „CHMOD“, mit Hilfe des FTP-Programms nötig.
Zum Dateiupload gibt es noch einige nützliche Variablen
- $_FILES[‚userfile‘][’name‘]: Der ursprüngliche Dateiname.
- $_FILES[‚userfile‘][‚tmp_name‘]: Der temporäre Dateiname, unter dem die hochgeladene Datei auf dem Server gespeichert wurde.
- $_FILES[‚userfile‘][‚type‘]: Der Mime-Type der Datei, falls der Browser diese Information mitgeliefert hat. Ein Beispiel wäre „image/jpg“.
- $_FILES[‚userfile‘][’size‘]: Die Größe der Datei in Bytes.
Tüchtige Programmierer machen mehr daraus, dementsprechend sind verschiedene, fertige Funktionen erhältlich. Es kommt darauf an, was man benötigt.
PHP Datei Uploader
Der PHP Datei Uploader etwa bietet den mehrfachen Upload zur gleichen Zeit an. So muss der Anwender nicht umständlich Datei für Datei absenden, wenn zum Beispiel eine Galerie gefüllt werden soll. Das mitgelieferte Design ist mit Templates und CSS leicht zu ändern, die Anzahl der Uploadfelder kann erweitert werden und die Dateitypen und Größen sind einstellbar. Auch werden die Dateien automatisch umbenannt, um ein versehentliches Überschreiben zu vermeiden.
Gleich mehrere Dateien kann dieses Skript hochladen
rc_uploader
Der rc_uploader ist ein noch umfangreicheres PHP-Skript. Zu seinen Features gehört das Setzen eines Administrator-Passworts, multiple Uploads und die Email-Benachrichtigung bei neuer Datei. Dem Besucher stehen drei Überschreib-Optionen bei bereits auf dem Server existierenden Dateinamen zur Verfügung: Überschreiben, manuell umbenennen und automatisch umbenennen. Kommt keine der drei Möglichkeiten in Frage, wird der Upload auf Wunsch einfach abgebrochen. Alle Inputfelder können hier optional an- und ausgeschaltet werden.
Viele brauchbare Features bietet der rc_uploader
Uploader für jeden Zweck
Zach White bietet auf seiner Website Upload-Skripte für verschiedene Anwendungsbereiche an. Man findet einen Advance Uploader mit Dateigrößen- und Dateiendungen-Limitierung, einen PHP Image Uploader als Spezialist für Galerien, der gleich fünf Bilder gleichzeitig hoch laden kann und die Dateigröße und die Anzahl der Dateien beschränkt und auch einen Up-and-Downloader, welcher dem Besucher gestattet, die bereitgestellten Dateien anderer Nutzer zu durchforsten und bei Bedarf herunter zu laden.
PHP Upload Tool V.1.0
Mit dem PHP Upload Tool von Thorsten Ostermeier können ganz automatisch PHP-Seiten zum Hochladen von Dateien und zum Verwalten solcher Dateien erstellt werden. Man gibt lediglich die Dateinamen der Scripte an, ob hoch geladene Dateien gelöscht oder umbenannt werden können, sowie die maximale Dateigröße. Weiterhin kann definiert werden, welche Dateiendungen zugelassen sind und ob ein Passwortschutz verwendet werden soll. Praktisch: Verschiedene Benutzer können mit individuellen Rechten für Datei-Uploads ausgestattet werden. Nach einem Klick erstellt das Programm eine Upload- sowie eine Serverdatei. Die Uploaddatei dient zum Hochladen von Daten, die Serverdatei dagegen zur Verwaltung dieser Dateien. Mit dieser Serverdatei kann der Administrator Dateien löschen oder umbenennen.
Ein PHP-Upload-Wizzard
Ein Upload kann auf vielfältige Weise eingesetzt werden. Ob für die Gäste-Bildergalerie oder bei dem Hochladen eigener Musikstücke, so kann jeder Besucher sein Scherflein beitragen.
Erstveröffentlichung 06.04.2005
Wie hilfreich war dieser Beitrag?
Klicke auf die Sterne um zu bewerten!
Durchschnittliche Bewertung 0 / 5. Anzahl Bewertungen: 0
5 Antworten zu „Gib es mir: Datei-Upload mit PHP“
— was ist Deine Meinung?
Hallo ich habe mich mal mit dem Thema automatischer Dateiupload beschäftigt dazu muss man aber wissen, wie man 1. das Dateiupload Formularfeld formatiert (allein schon schwer) und wie man es dann automatisch nach Auswahl absendet. Dann wird eine Ladegrafik angezeigt und es dann automatisch mit AJAX und PHP auf den Server zieht. Dazu eine kleine Information… Versuchen Sie es nicht mit der Methode „click“ bzw. danach „submit“ dies geht nämlich im MSIE NICHT!
Also habe ich es in mein Buch geschrieben…
http://www.amazon.de/dp/B00FKZZPGO/ref=cm_sw_r_fa_dp_6xLtsb0FARDT8
Wenn Ihnen das zu teuer ist dann könnt ihr mich auch gerne Kontaktieren 😉
Sorry link broken … Hier nochmal
http://www.amazon.de/gp/aw/d/B00LBRHUS6?ie=UTF8&redirectFromSS=1&pc_redir=T1&noEncodingTag=1&robot_redir=1
Freue mich über Feedback!
Gruß Robert
Hallo.
wie baue ich denn das Script in meine Homepage ein. Kommen die Scripte upload.php und das Formular beide in die gleiche Datei? Body oder Head.
LG
Heike
Hallöchen,
ich weiß es ist etwas spät um darauf zu antworten aber iwi hab ich grad lust dazu hihi^^ ich finde es eh immer schade wenn leute fragen stelle und dann keine antwort darauf bekommen….
zu deiner frage…
klar is es möglich das in php ohne datenbank zu generieren…
ich stell mir das so vor.. das man entweder für jede seite einen ordner anlegt wo dann je nach dem von welcher seite die datei hochgeladen wurde sie in den entsprechenden ordner kommt und dann aus dem entsprechendem ordner einfach zum download angeboten wird…
oder das man sie einfach in den selben ordner packt und je nach dem auf welcher seite sie aufgerufden werden sollen sie auf bestimmte weise benennt zb. „seite_1-test.jpg“, „seite_2-hallo.doc“ usw.
wenn man sie dann mit explode(„-„, $Datei); auseinander futzelt kann man auch ganz einfach sagen auf welcher seite die datei zum download angeboten werden soll war meine überlegung jetz mal ^^
sry ich schreibe zu viel hihi^^^
naja hoffe damit konnti ch weiter helfen oda auch nit liest wohl eh keiner mehr hihi^^^
Guten Tag,
ich habe eine Frage. Ich habe eine Website, deren Navigation sehr sehr lang ist. Auf jeder der Seiten soll man Dateien hochladen können. Die Datei soll dann auf der jeweiligen Unterseite zum Download angeboten werden, also genau da, auf welcher Unterseite sie hochgealden wurde. Ist es möglich dies mit PHP ohne Datenbank zu generieren?
mfg