Laden Sie mehrere Bilder in PHP hoch

Olorunfemi Akinlua 15 Februar 2024
  1. Verstehen Sie die Formularaktion und $_FILES für das Hochladen mehrerer Dateien in PHP
  2. Verwenden Sie move_uploaded_file(), um mehrere Bilder in PHP hochzuladen
Laden Sie mehrere Bilder in PHP hoch

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.

bereitgestellte PHP-Datei an den Browser

Wählen Sie die Bilder aus und laden Sie die Bilder hoch.

Bilder zum Hochladen auswählen

Zeigen Sie dann hochgeladene Dateien an.

hochgeladene Dateien anzeigen

Die hochgeladenen Bilder:

hochgeladene Bilder

Wenn Sie eine Datei auswählen, die kein Bild ist, werden die Fehler angezeigt.

Fehler

Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

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

Verwandter Artikel - PHP Upload