PHP - Datei-Upload

Hallo da draußen, ambitionierte PHP-Entwickler! Heute tauchen wir ein in die aufregende Welt des Datei-Uploads mit PHP. Als dein freundlicher Nachbarschafts-Computerlehrer bin ich hier, um dich auf diesem Weg Schritt für Schritt zu führen. Also hole dir dein lieblingsGetränk, setze dich bequem hin und lassen wir gemeinsam diese Datei-Upload-Abenteuerreise antreten!

PHP - File Uploading

Datei-Upload verstehen

Bevor wir uns in den Code stürzen, lassen wir uns einen Moment Zeit, um zu verstehen, was Datei-Upload überhaupt ist. Stell dir vor, du schickst einen Brief an einen Freund. Du schreibst den Brief, legst ihn in einen Umschlag und schickst ihn mit der Post. Datei-Upload ist ziemlich ähnlich! Stattdessen schickst du eine Datei (wie ein Bild oder ein Dokument) von deinem Computer zu einem Webserver.

Erstellen eines Datei-Upload-Formulars

Der erste Schritt auf unserer Datei-Upload-Reise ist das Erstellen eines HTML-Formulars, das es Benutzern ermöglicht, eine Datei auszuwählen und hochzuladen. Denke daran als den Umschlag, den wir benutzen, um unseren Brief zu senden.

Lassen wir ein einfaches HTML-Formular erstellen:

<form action="upload.php" method="post" enctype="multipart/form-data">
Datei auswählen:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Bild hochladen" name="submit">
</form>

Lassen wir das auseinandernehmen:

  1. action="upload.php": Das tells dem Formular, wohin die Daten gesendet werden sollen. In diesem Fall erstellen wir ein PHP-Skript namens upload.php, um den Datei-Upload zu verarbeiten.
  2. method="post": Das gibt an, dass wir die POST-Methode verwenden, um Daten zu senden.
  3. enctype="multipart/form-data": Das ist entscheidend! Es teilt dem Formular mit, dass wir mehr als nur Text senden – wir senden eine Datei.
  4. <input type="file">: Das erstellt eine Schaltfläche, mit der Benutzer eine Datei von ihrem Computer auswählen können.

Erstellen eines Upload-Skripts

Nun, da wir unser Formular haben, müssen wir das PHP-Skript erstellen, das den Datei-Upload verarbeitet. Hier passiert die Magie!

Lassen wir unsere upload.php Datei erstellen:

<?php
if(isset($_POST["submit"])) {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Überprüfen, ob die Datei bereits existiert
if (file_exists($target_file)) {
echo "Entschuldigung, die Datei existiert bereits.";
$uploadOk = 0;
}

// Überprüfen der Dateigröße
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Entschuldigung, deine Datei ist zu groß.";
$uploadOk = 0;
}

// Erlauben bestimmter Dateiformate
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Entschuldigung, nur JPG, JPEG, PNG & GIF-Dateien sind erlaubt.";
$uploadOk = 0;
}

// Überprüfen, ob $uploadOk durch einen Fehler auf 0 gesetzt wurde
if ($uploadOk == 0) {
echo "Entschuldigung, deine Datei wurde nicht hochgeladen.";
// Wenn alles in Ordnung ist, versuche, die Datei hochzuladen
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "Die Datei ". basename( $_FILES["fileToUpload"]["name"]). " wurde hochgeladen.";
} else {
echo "Entschuldigung, es gab einen Fehler beim Hochladen deiner Datei.";
}
}
}
?>

Wow, das ist viel Code! Keine Sorge, wir werden das Schritt für Schritt auseinandernehmen:

  1. Zuerst überprüfen wir, ob das Formular submitted wurde, indem wir isset($_POST["submit"]) verwenden.
  2. Wir richten einige Variablen ein:
  • $target_dir: Das Verzeichnis, in dem wir hochgeladene Dateien speichern.
  • $target_file: Der vollständige Pfad der hochgeladenen Datei.
  • $uploadOk: Ein Flag, um zu verfolgen, ob es in Ordnung ist, die Datei hochzuladen.
  • $imageFileType: Die Dateierweiterung der hochgeladenen Datei.
  1. Wir führen einige Überprüfungen durch:
  • Existiert die Datei bereits in unserem Uploads-Verzeichnis?
  • Ist die Datei zu groß?
  • Ist das Dateiformat erlaubt?
  1. Wenn eine dieser Überprüfungen fehlschlägt, setzen wir $uploadOk auf 0.

  2. Schließlich, wenn alles in Ordnung ist ($uploadOk == 1), verwenden wir die Funktion move_uploaded_file(), um die hochgeladene Datei von ihrem temporären Speicherort in unser Uploads-Verzeichnis zu verschieben.

Häufige Datei-Upload-Methoden

Hier ist eine Tabelle der häufig verwendeten Methoden in PHP Datei-Uploads:

Methode Beschreibung
$_FILES["file"]["name"] Der ursprüngliche Name der Datei auf dem Client-Rechner
$_FILES["file"]["type"] Der MIME-Typ der Datei
$_FILES["file"]["size"] Die Größe der Datei in Bytes
$_FILES["file"]["tmp_name"] Der temporäre Dateiname der Datei, die auf dem Server gespeichert ist
$_FILES["file"]["error"] Der Fehlercode, der mit diesem Datei-Upload verbunden ist
move_uploaded_file() Verschiebt eine hochgeladene Datei an einen neuen Ort

Schlussfolgerung

Und das war's, Leute! Wir haben ein Formular erstellt, das es Benutzern ermöglicht, eine Datei auszuwählen, und ein PHP-Skript, das den Upload-Prozess verarbeitet, einschließlich Fehlerprüfung und Dateitypenbeschränkungen.

Denke daran, dass Datei-Uploads eine Sicherheitsgefahr darstellen können, wenn sie nicht ordnungsgemäß behandelt werden. Validiere und säubere immer Benutzer-Eingaben, beschränke Dateitypen und -größen und speichere hochgeladene Dateien in einem Verzeichnis, das nicht direkt über einen Webbrowser zugänglich ist.

Als wir diese Lektion abschlossen, erinnerte ich mich an einen Schüler, der einmal ein 1GB-Videodatei auf eine Website hochgeladen hat, die für Profilbilder bestimmt war. Needles to say, es endete nicht gut für den Server! Also denkt immer daran, diese Dateigrößenbeschränkungen festzulegen, Leute!

Weiters üben, weiter codieren und vor allem Spaß mit PHP haben! Bis zum nächsten Mal, viel Spaß beim Uploaden!

Credits: Image by storyset