Laden Sie mehrere Bilder in PHP hoch
-
Verstehen Sie die Formularaktion und
$_FILES
für das Hochladen mehrerer Dateien in PHP -
Verwenden Sie
move_uploaded_file()
, um mehrere Bilder in PHP hochzuladen
Innerhalb unserer PHP-Anwendungen, insbesondere benutzerbasierter Anwendungen, müssen wir möglicherweise von Zeit zu Zeit mehrere Dateien gleichzeitig hochladen. Und mit PHP-Funktionen und HTML-Fähigkeiten ist es sehr gut möglich und einfach zu bewerkstelligen.
Um dies zu ermöglichen, müssen wir die Formularaktion in unserer HTML-Datei oder in unserem Abschnitt angeben, je nachdem, wie Sie Ihre Codebasis strukturieren, und dann die integrierten Funktionen verwenden, um die Aktion zu verarbeiten.
In diesem Artikel lernen wir, wie man mehrere Bilder in PHP hochlädt, was uns einen Kontext für die Angabe der gewünschten Dateien aus einer Formulareingabe, die Verarbeitung aller vom Benutzer ausgewählten Dateien und das Hochladen oder Verschieben an den erforderlichen Ort gibt.
Verstehen Sie die Formularaktion und $_FILES
für das Hochladen mehrerer Dateien in PHP
Wenn ein Benutzer eine Eingabe in ein HTML-Formular eingibt, verwenden wir die POST
-Methode, um alle Eingaben (von Text bis zu Dateien) an die Serverseite zu senden, auf der sich unsere PHP-Anwendung befindet.
<form method='post' action='' enctype='multipart/form-data'>
Der Teil enctype='multipart/form-data'
gibt an, wie die Formulardaten codiert werden, und ist erforderlich, wenn wir das Hochladen von Dateien in unserem Formular verwenden.
Für das Hochladen von Dateien benötigen wir den Eingabetyp Datei
und einen bestimmten Namen (kann ein beliebiger Name sein), Datei
.
<input type="file" name="file" id="file">
Für das Hochladen mehrerer Dateien benötigen wir weiterhin den Eingabetyp file
, aber jetzt einen anderen angegebenen Namen, file[]
, und ein hinzugefügtes Attribut, multiple
. Der Zusatz []
zeigt an, dass das Eingabefeld mehr als eine Datei verarbeiten kann.
<input type="file" name="files[]" multiple/>
Auf der Serverseite ist die globale Variable $_FILES
ein assoziatives Array, das Dateien enthält, die über die HTTP-Methode POST
hochgeladen wurden, sodass wir die Datei entsprechend verarbeiten können.
<?php
$_FILES["files"]
Verwenden Sie move_uploaded_file()
, um mehrere Bilder in PHP hochzuladen
Nachdem wir die Grundlagen verstanden haben, müssen wir mehrere Dateien hochladen. Lassen Sie uns das PHP-Formular erstellen, um mehrere Bilder hochzuladen.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Multiple Image Upload</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" name="formUploadFile">
<label>Select image(s) to upload:</label>
<input type="file" name="files[]" multiple="multiple" />
<input type="submit" value="Upload File" name="imgSubmit" />
</form>
<?php
if (isset($_POST["imgSubmit"])) {
$errors = [];
$uploadedFiles = [];
$extension = array("jpeg", "jpg", "png");
$UploadFolder = "images";
$counter = 0;
foreach ($_FILES["files"]["tmp_name"] as $key => $tmp_name) {
$temp = $_FILES["files"]["tmp_name"][$key];
$name = $_FILES["files"]["name"][$key];
if (empty($temp)) {
break;
}
$counter++;
$UploadOk = true;
$ext = pathinfo($name, PATHINFO_EXTENSION);
if (in_array($ext, $extension) == false) {
$UploadOk = false;
array_push($errors, $name . " isn't an image.");
}
if ($UploadOk == true) {
move_uploaded_file($temp, $UploadFolder . "/" . $name);
array_push($uploadedFiles, $name);
}
}
if ($counter > 0) {
if (count($errors) > 0) {
echo "<b>Errors:</b>";
echo "<br/><ul>";
foreach ($errors as $error) {
echo "<li>" . $error . "</li>";
}
echo "</ul><br/>";
}
if (count($uploadedFiles) > 0) {
echo "<b>Uploaded Files:</b>";
echo "<br/><ul>";
foreach ($uploadedFiles as $fileName) {
echo "<li>" . $fileName . "</li>";
}
echo "</ul><br/>";
echo count($uploadedFiles) . " iamge(s) are successfully uploaded.";
}
} else {
echo "Please, Select image(s) to upload.";
}
}
?>
</body>
</html>
Überprüfen Sie, ob die Variable $_POST[]
mit der Funktion isset()
gesetzt ist, initiieren Sie die wichtigen Variablen und setzen Sie die Erweiterungen, die wir für den Dateiupload benötigen.
if (isset($_POST["imgSubmit"])) {
$errors = [];
$uploadedFiles = [];
$extension = array("jpeg", "jpg", "png");
$UploadFolder = "images";
Danach durchlaufen wir die mehreren Bilder, die durch die Variable $_FILES[]
verarbeitet wurden, und prüfen dann die Erweiterung mit pathinfo()
. Wenn true
, verschieben wir die Bilder in den angegebenen Ordner $UploadFolder
mit der Funktion move_uploaded_file()
und verschieben Sie den Namen der Bilder in die Variable $uploadedFiles
.
foreach ($_FILES["files"]["tmp_name"] as $key => $tmp_name) {
$temp = $_FILES["files"]["tmp_name"][$key];
$name = $_FILES["files"]["name"][$key];
if (empty($temp)) {
break;
}
$counter++;
$UploadOk = true;
$ext = pathinfo($name, PATHINFO_EXTENSION);
if (in_array($ext, $extension) == false) {
$UploadOk = false;
array_push($errors, $name . " isn't an image.");
}
if ($UploadOk == true) {
move_uploaded_file($temp, $UploadFolder . "/" . $name);
array_push($uploadedFiles, $name);
}
}
Abschließend haben wir die vorhandenen Fehler und hochgeladenen Dateien angezeigt.
if ($counter > 0) {
if (count($errors) > 0) {
echo "<b>Errors:</b>";
echo "<br/><ul>";
foreach ($errors as $error) {
echo "<li>" . $error . "</li>";
}
echo "</ul><br/>";
}
if (count($uploadedFiles) > 0) {
echo "<b>Uploaded Files:</b>";
echo "<br/><ul>";
foreach ($uploadedFiles as $fileName) {
echo "<li>" . $fileName . "</li>";
}
echo "</ul><br/>";
echo count($uploadedFiles) . " image(s) are successfully uploaded.";
}
} else {
echo "Please, Select image(s) to upload.";
}
Die bereitgestellte PHP-Datei an den Browser.
Wählen Sie die Bilder aus und laden Sie die Bilder hoch.
Zeigen Sie dann hochgeladene Dateien an.
Die hochgeladenen Bilder:
Wenn Sie eine Datei auswählen, die kein Bild ist, werden die Fehler angezeigt.
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn