Télécharger plusieurs fichiers en PHP
-
Utilisez la balise
multiple
, un tableau dans la balisename
de l’attributinput
dans le formulaire et la fonctionmove_uploaded_file()
pour télécharger plusieurs fichiers en PHP - Utilisez le PDO pour télécharger les fichiers multiples dans la base de données en PHP
Nous allons introduire une méthode pour uploader plusieurs fichiers en PHP en spécifiant l’attribut name
de la balise input
sous forme de tableau et en utilisant l’attribut multiple
. La valeur de l’attribut enctype
de la balise form
est multipart/form-data
. Cette méthode utilise mysqli
pour la connexion à la base de données.
Nous présenterons également une autre méthode pour télécharger plusieurs fichiers en PHP à l’aide du PDO. Nous allons télécharger les fichiers dans un dossier, puis les télécharger dans une base de données. Cette méthode est similaire à la première méthode en termes de mise en œuvre.
Utilisez la balise multiple
, un tableau dans la balise name
de l’attribut input
dans le formulaire et la fonction move_uploaded_file()
pour télécharger plusieurs fichiers en PHP
Nous pouvons spécifier l’attribut name
de la balise input
sous forme de tableau pour télécharger plusieurs fichiers. La balise input
utilise le mot clé multiple
qui nous permet de sélectionner le fichier multiple lors du téléchargement. Nous pouvons écrire l’encodage multipart/form-data
pour l’attribut enctype
pour spécifier comment les données du formulaire doivent être encodées lors de la soumission du formulaire. On peut utiliser le mysqli
pour se connecter à la base de données. La fonction move_uploaded_file()
déplace le fichier téléchargé d’un emplacement temporaire du serveur vers l’emplacement souhaité. Nous pouvons utiliser les instructions SQL INSERT
pour télécharger le fichier sélectionné dans la base de données.
Par exemple, définissez une connexion à la base de données avec l’objet mysqli
et affectez la valeur à la variable $db
. Créez un formulaire HTML avec la méthode POST
et le type d’encodage multipart/form-data
pour télécharger les fichiers. Spécifiez l’attribut type
de la balise input
comme file
et l’attribut name
comme file
. N’oubliez pas d’écrire l’attribut multiple
avant de fermer la balise input
. Écrivez la balise input
pour soumettre le formulaire.
Vérifiez si le formulaire a été soumis avec la fonction isset()
. Utilisez la fonction count
pour compter le nombre de fichiers téléchargés. Prenez le $_FILES['file']['name']
comme paramètre de la fonction count
et affectez-le à une variable $countfiles
. Utilisez la boucle for pour parcourir le fichier téléchargé. À l’intérieur de la boucle, créez une variable $filename
et affectez-la comme $_FILES['file']['name'][$i]
. Créez un dossier nommé upload
dans le répertoire racine. Utilisez la fonction move_upload_file()
pour déplacer le fichier. Utilisez $_FILES['file']['tmp_name'][$i]
comme premier paramètre qui est le fichier avec le nom temporaire. Utilisez 'upload/'.$filename
comme deuxième paramètre qui est le nom du fichier et l’emplacement pour stocker le fichier téléchargé.
Exécutez une requête SQL INSERT
pour insérer les fichiers dans la base de données. Insérez la variable $filename
comme id
et name
dans la table fileup
de la base de données. Utilisez la variable $db
pour appeler la fonction query()
avec la variable $sql
comme paramètre pour exécuter la requête.
Exemple de code :
# 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>
?>
Production:
SELECT * FROM `fileup`
id name
1 cfc.jpg
2 hills.jpg
Utilisez le PDO pour télécharger les fichiers multiples dans la base de données en PHP
Nous pouvons utiliser le PDO pour télécharger plusieurs fichiers en PHP. Nous pouvons utiliser l’objet PDO pour créer une connexion à la base de données. Nous utilisons les instructions préparées pour insérer le fichier dans la base de données. Cette méthode ne diffère de la première méthode qu’en termes de connexion à la base de données. Nous pouvons également utiliser le formulaire HTML exact pour cette méthode. Nous démontrons cette méthode en téléchargeant deux fichiers jpg dans le dossier et la base de données.
Par exemple, établissez une connexion à la base de données PDO à l’aide du mot-clé new
et affectez-le à la variable $conn
. Vérifiez si le formulaire a été soumis avec la fonction isset()
. Comptez les fichiers en utilisant la fonction count
comme ci-dessus. Ensuite, écrivez une requête sur la variable $query
pour insérer l’id
et le name
. Écrivez les espaces réservés ?
pour les valeurs de la requête. Préparez la requête à l’aide de la fonction prepare()
et attribuez la valeur dans la variable $statement
. Déplacez chaque fichier dans le dossier uplaod
à l’aide de la fonction move_uploaded_file()
. Exécutez la requête à l’aide de la fonction execute()
. Fournissez un tableau avec le $filename
et $target_file
comme paramètres de la fonction.
Dans l’exemple ci-dessous, l’utilisateur télécharge deux fichiers jpg. Tout d’abord, le fichier est téléchargé dans le dossier upload
, puis il est téléchargé dans la base de données. La base de données contient la table fileup
, et elle a les colonnes id
et name
. Pour en savoir plus sur la fonction move_uploaded_files()
, veuillez vous référer au Manuel PHP
Exemple de code :
#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));
}
}
?>
Production:
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