Hochladen von PHP -Dateien
Mit PHP ist es einfach, Dateien auf den Server hochzuladen.
Mit Leichtigkeit kommt jedoch Gefahr, also seien Sie immer vorsichtig, wenn Sie Datei-Uploads zulassen!
Konfigurieren Sie die Datei „php.ini“.
Stellen Sie zunächst sicher, dass PHP so konfiguriert ist, dass es Datei-Uploads zulässt.
Suchen Sie in Ihrer „php.ini“-Datei nach der file_uploads
Direktive und setzen Sie sie auf On:
file_uploads = On
Erstellen Sie das HTML-Formular
Erstellen Sie als Nächstes ein HTML-Formular, mit dem Benutzer die Bilddatei auswählen können, die sie hochladen möchten:
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post"
enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
Einige Regeln für das obige HTML-Formular:
- Stellen Sie sicher, dass das Formular method="post" verwendet
- Das Formular benötigt außerdem das folgende Attribut: enctype="multipart/form-data". Es gibt an, welcher Inhaltstyp beim Senden des Formulars verwendet werden soll
Ohne die oben genannten Anforderungen funktioniert der Dateiupload nicht.
Andere Dinge zu beachten:
- Das type="file"-Attribut des <input>-Tags zeigt das Eingabefeld als Dateiauswahlsteuerelement mit einer Schaltfläche "Durchsuchen" neben dem Eingabesteuerelement
Das obige Formular sendet Daten an eine Datei namens "upload.php", die wir als nächstes erstellen werden.
Erstellen Sie das PHP-Skript zum Hochladen der Datei
Die Datei „upload.php“ enthält den Code zum Hochladen einer Datei:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
?>
PHP-Skript erklärt:
- $target_dir = "uploads/" - gibt das Verzeichnis an, in dem die Datei abgelegt wird
- $target_file gibt den Pfad der hochzuladenden Datei an
- $uploadOk=1 wird noch nicht verwendet (wird später verwendet)
- $imageFileType enthält die Dateiendung der Datei (in Kleinbuchstaben)
- Überprüfen Sie als Nächstes, ob die Bilddatei ein echtes Bild oder ein gefälschtes Bild ist
Hinweis: Sie müssen ein neues Verzeichnis namens „uploads“ in dem Verzeichnis erstellen, in dem sich die Datei „upload.php“ befindet. Die hochgeladenen Dateien werden dort gespeichert.
Überprüfen Sie, ob die Datei bereits vorhanden ist
Jetzt können wir einige Einschränkungen hinzufügen.
Zuerst prüfen wir, ob die Datei bereits im Ordner „Uploads“ vorhanden ist. Wenn dies der Fall ist, wird eine Fehlermeldung angezeigt und $uploadOk wird auf 0 gesetzt:
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
Dateigröße begrenzen
Das Dateieingabefeld in unserem obigen HTML-Formular heißt "fileToUpload".
Jetzt wollen wir die Größe der Datei überprüfen. Wenn die Datei größer als 500 KB ist, wird eine Fehlermeldung angezeigt und $uploadOk wird auf 0 gesetzt:
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
Dateityp begrenzen
Mit dem folgenden Code können Benutzer nur JPG-, JPEG-, PNG- und GIF-Dateien hochladen. Alle anderen Dateitypen geben eine Fehlermeldung aus, bevor $uploadOk auf 0 gesetzt wird:
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
Schließen Sie das PHP-Skript zum Hochladen der Datei ab
Die komplette „upload.php“-Datei sieht nun so aus:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])).
" has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
Vollständige Referenz zum PHP-Dateisystem
Eine vollständige Referenz der Dateisystemfunktionen finden Sie in unserer vollständigen PHP-Dateisystemreferenz .