Mehrere Dateien in PHP hochladen

Subodh Poudel 22 Januar 2022
  1. 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
  2. Verwenden Sie das PDO, um die mehreren Dateien in der Datenbank in PHP hochzuladen
Mehrere Dateien in PHP hochladen

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 Poudel avatar Subodh Poudel avatar

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

Verwandter Artikel - PHP Upload