Mehrere Dateien in PHP hochladen
-
Verwenden Sie das Tag
multiple
, ein Array im Tagname
des Attributsinput
im Formular und die Funktionmove_uploaded_file()
, um mehrere Dateien in PHP hochzuladen - Verwenden Sie das PDO, um die mehreren Dateien in der Datenbank in PHP hochzuladen
Wir werden eine Methode zum Hochladen mehrerer Dateien in PHP vorstellen, indem wir das name
-Attribut des input
-Tags als Array angeben und das multiple
-Attribut verwenden. Der Wert des Attributs enctype
des Tags form
ist multipart/form-data
. Diese Methode verwendet mysqli
für die Datenbankverbindung.
Wir werden auch eine andere Methode zum Hochladen mehrerer Dateien in PHP mit dem PDO vorstellen. Wir werden die Dateien in einen Ordner hochladen und dann in eine Datenbank hochladen. Dieses Verfahren ist hinsichtlich der Implementierung dem ersten Verfahren ähnlich.
Verwenden Sie das Tag multiple
, ein Array im Tag name
des Attributs input
im Formular und die Funktion move_uploaded_file()
, um mehrere Dateien in PHP hochzuladen
Wir können das name
-Attribut des input
-Tags als Array angeben, um mehrere Dateien hochzuladen. Das input
-Tag verwendet das multiple
-Schlüsselwort, mit dem wir beim Hochladen die multiple Datei auswählen können. Wir können die Kodierung multipart/form-data
für das Attribut enctype
schreiben, um anzugeben, wie die Formulardaten beim Absenden des Formulars kodiert werden sollen. Wir können das mysqli
verwenden, um uns mit der Datenbank zu verbinden. Die Funktion move_uploaded_file()
verschiebt die hochgeladene Datei von einem temporären Ort des Servers an den gewünschten Ort. Wir können die SQL-Anweisungen INSERT
verwenden, um die ausgewählte Datei in die Datenbank hochzuladen.
Stellen Sie beispielsweise eine Datenbankverbindung mit dem Objekt mysqli
her und weisen Sie den Wert der Variablen $db
zu. Erstellen Sie ein HTML-Formular mit der Methode POST
und dem Kodierungstyp multipart/form-data
, um die Dateien hochzuladen. Geben Sie das type
-Attribut des input
-Tags als file
und das name
-Attribut als file[]
an. Vergessen Sie nicht, das Attribut multiple
zu schreiben, bevor Sie das Tag input
schließen. Schreiben Sie das Tag input
, um das Formular abzuschicken.
Prüfen Sie, ob das Formular mit der Funktion isset()
abgeschickt wurde. Mit der Funktion Zählen
können Sie die Anzahl der hochgeladenen Dateien zählen. Nehmen Sie $_FILES['file']['name']
als Parameter für die Funktion count
und weisen Sie sie einer Variablen $countfiles
zu. Verwenden Sie die for-Schleife, um die hochgeladene Datei zu durchlaufen. Erstellen Sie innerhalb der Schleife eine Variable $filename
und weisen Sie sie als $_FILES['file']['name'][$i]
zu. Erstellen Sie im Stammverzeichnis einen Ordner namens upload
. Verwenden Sie die Funktion move_upload_file()
, um die Datei zu verschieben. Verwenden Sie $_FILES['file']['tmp_name'][$i]
als ersten Parameter, der die Datei mit dem temporären Namen ist. Verwenden Sie 'upload/'.$filename
als zweiten Parameter, der der Dateiname und der Speicherort der hochgeladenen Datei ist.
Führen Sie eine SQL-Abfrage INSERT
aus, um die Dateien in die Datenbank einzufügen. Fügen Sie die Variable $filename
sowohl als id
als auch als name
in die Tabelle fileup
in der Datenbank ein. Verwenden Sie die Variable $db
, um die Funktion query()
mit der Variablen $sql
als Parameter zum Ausführen der Abfrage aufzurufen.
Beispielcode:
# php 7.*
<?php
if(isset($_POST['submit'])){
$countfiles = count($_FILES['file']['name']);
for($i=0;$i<$countfiles;$i++){
$filename = $_FILES['file']['name'][$i];
$sql = "INSERT INTO fileup(id,name) VALUES ('$filename','$filename')";
$db->query($sql);
move_uploaded_file($_FILES['file']['tmp_name'][$i],'upload/'.$filename);
}
}
?>
<form method='post' action='' enctype='multipart/form-data'>
<input type="file" name="file[]" id="file" multiple>
<input type='submit' name='submit' value='Upload'>
</form>
?>
Ausgabe:
SELECT * FROM `fileup`
id name
1 cfc.jpg
2 hills.jpg
Verwenden Sie das PDO, um die mehreren Dateien in der Datenbank in PHP hochzuladen
Wir können das PDO verwenden, um mehrere Dateien in PHP hochzuladen. Mit dem PDO-Objekt können wir eine Verbindung zur Datenbank herstellen. Wir verwenden die vorbereiteten Anweisungen, um die Datei in die Datenbank einzufügen. Diese Methode unterscheidet sich nur hinsichtlich der Datenbankverbindung von der ersten Methode. Wir können auch für diese Methode das genaue HTML-Formular verwenden. Wir demonstrieren diese Methode, indem wir zwei jpg-Dateien in den Ordner und die Datenbank hochladen.
Stellen Sie beispielsweise eine PDO-Datenbankverbindung mit dem Schlüsselwort new
her und weisen Sie diese der Variablen $conn
zu. Prüfen Sie, ob das Formular mit der Funktion isset()
abgeschickt wurde. Zählen Sie die Dateien mit der Funktion Zählen
wie oben beschrieben. Schreiben Sie dann eine Abfrage auf die Variable $query
, um id
und name
einzufügen. Schreiben Sie die Platzhalter ?
für die Werte in der Abfrage. Bereiten Sie die Abfrage mit der Funktion prepare()
vor und weisen Sie der Variablen $statement
den Wert zu. Verschieben Sie jede Datei mit der Funktion move_uploaded_file()
in den Ordner uplaod
. Führen Sie die Abfrage mit der Funktion execute()
aus. Geben Sie ein Array mit den Parametern $filename
und $target_file
als Parameter in der Funktion an.
Im folgenden Beispiel lädt der Benutzer zwei JPG-Dateien hoch. Zuerst wird die Datei in den Ordner upload
hochgeladen und dann in die Datenbank hochgeladen. Die Datenbank enthält die Tabelle fileup
und hat die Spalten id
und name
. Um mehr über die Funktion move_uploaded_files()
zu erfahren, lesen Sie bitte das PHP-Handbuch
Beispielcode:
#php 7.x
<?php
$conn = new PDO("mysql:host=$server;dbname=$dbname","$username","$password");
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
if(isset($_POST['submit'])){
$countfiles = count($_FILES['file']['name']);
$query = "INSERT INTO fileup (id, name) VALUES(?,?)";
$statement = $conn->prepare($query);
for($i=0;$i<$countfiles;$i++){
$filename = $_FILES['file']['name'][$i];
$target_file = 'upload/'.$filename;
move_uploaded_file($_FILES['file']['tmp_name'][$i],$target_file);
$statement->execute(array($filename,$target_file));
}
}
?>
Ausgabe:
SELECT * FROM `fileup`
id name
1 upload/cfc.jpg
2+ upload/count.jpg
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn