PHP $_FILES für hochgeladene Dateien

Dateien durch $_FILES verarbeiten

Die superglobalen Arrays sind nicht nur für die Datenübertragung wie Variablewerte und Formulareinträge zuständig, sie können auch das Hochladen von Dateien ermöglichen. Zwar kann man ohne $_FILES auch Dateien hochladen, nur wird danach nichts passieren und eine Weiterverarbeitung wird scheitern.

$_FILES bietet die Möglichkeit an, dass man Dateien wie Bilder, Videos, Texte, PDF usw. auf die Webseite laden kann. Das passiert bei YouTube mit Videos, das passiert bei anderen Anwendungen im Internet mit Texte für Beschreibungen oder Skripte in Programmiererforen. Das Hochladen erfolgt über ein Formular, doch erst mit dieser Funktion kann man das Ergebnis weiterverarbeiten.

Hochgeladene Dateien mit PHP und $_FILES bearbeiten

<?php
$datei = $_FILES["hochgeladene_datei"];
?>



Das Beispiel zeigt, wie man mit $_FILES umgehen kann, wenngleich dies nur zur Veranschaulichung angeboten wird, weil in der Praxis geht man viel weiter. Man braucht, um das Hochladen von Dateien überhaupt zu ermöglichen, zwei Dinge: die Verarbeitung und das Formular.

Beim Formular ist es eine sehr beliebte Falle: man stellt das Skript online, wählt eine Datei zum Test aus und es passiert genau gar nix. Warum? Weil das Formular normalerweise keinen angegebenen enctype aufweist. Daher wird der Standardwert genommen und das ist "text/plain". Das heißt konkret, dass der Server PHP mitteilt, dass da wer ein Formular abgeschickt hat, PHP freut sich auf die Daten und wartet auf Text - bloß: es kommt keiner. Dass da jetzt ein Word-Dokument daherkommen kann, ein cooles Video oder ein Bild - interessiert PHP gar nicht.

Erst wenn man beim Formular im FORM-Tag den Hinweis enctype="multipart/form-data" einbaut, ist PHP bereit, darüber nachzudenken, ob denn nicht auch Dateien geliefert werden könnten. Und erst wenn das der Fall ist, kann man mit $_FILES zum arbeiten anfangen.

$_FILES bedeutet in diesem Fall, dass einer Variable der Wert übergeben wird, den das entsprechende Formularfeld geschickt hat. Damit ist die Datei im Skript erkannt, allerdings braucht es dann eine Weiterverarbeitung, die in einem eigenen Beispiel gezeigt wird. Denn es gibt viele Möglichkeiten, was mit der Datei passieren kann und es braucht auch einen Schutz für die Anwendung, beispielsweise eine Sperre, wenn eine Datei zu groß ist. Dann muss eine Fehlermeldung erfolgen, die darauf hinweist.

Lesen Sie auch

Superglobale Array ist ein sperriger Begriff, mit dem man am Anfang seiner PHP-Karriere wenig anfangen kann. Aber schon bald wird man quasi täglich damit zu tun haben. Die wichtigsten Vertreter sind zweifelsohne $_GET und $_POST. Mit $_GET werden Werte durch die URL weitergegeben, bei $_POST werden die eingetragenen Formulardaten zur Verfügung gestellt, um sie auszuwerten - einen Kommentareintrag zum Beispiel.

Eine weitere wichtige Funktion ist mit $_SERVER gegeben, womit nicht nur Serverdaten abgefragt werden können, was man aufgrund des Namens hätte vermuten können. Es können auch Besucherdaten oder der verwendete Browser in Erfahrung gebracht werden.

Und dann gibt es noch die Sessionverwaltung mit $_SESSION, um zu überprüfen, ob das Mitglied sich eingeloggt hat. Weitere Lösungen sind mit $_FILES für hochgeladene Dateien und $_COOKIE für die Cookies in Anwendungen gegeben.

Diesen Artikel teilen

Kategorien

Grundlagen
HTML-Grundlagen
CSS-Grundlagen
Javascript-Grundlagen
PHP-Grundlagen
MySQL-Grundlagen
SEO-Grundlagen

Infos, Tipps, Vermarktung
Webdesign-Lexikon
Online-Werbung
PHP-Codeschnipsel