Recupération de la valeur d'un input array() de type file
Résolu
victoires
Messages postés
141
Statut
Membre
-
victoires Messages postés 141 Statut Membre -
victoires Messages postés 141 Statut Membre -
Bonjour,
J'ai un formulaire qui donne la possibilité aux utilisateurs d'ajouter N pièces jointes, pour cela j'ai mis un bouton pour ajouter un champ de type file qu'on l'utilisateur fait un clic ...
Je vois bien l'input file qui s'ajoute après un clic sur le bouton, mais le problème est que le $_FILES['file'] me retourne toujours une seule entrée
Avez-vous une idée comment puis-je faire pour récupérer l'ensemble des pièces de l'array $_FILES['file'] ? Merci d'avance
Cordialement
J'ai un formulaire qui donne la possibilité aux utilisateurs d'ajouter N pièces jointes, pour cela j'ai mis un bouton pour ajouter un champ de type file qu'on l'utilisateur fait un clic ...
<form method="post" enctype="multipart/form-data">
<span class='piece'><input type='file' name='file[]'/></span>
</form>
<p><button id='prependTo'>Ajouter une pièce jointe</button></p>
<script type="text/javascript">
$("#prependTo").click(function () {
$("<input type='file' name='file[]'/><br/>").prependTo('.piece');
});
</script>
Je vois bien l'input file qui s'ajoute après un clic sur le bouton, mais le problème est que le $_FILES['file'] me retourne toujours une seule entrée
Avez-vous une idée comment puis-je faire pour récupérer l'ensemble des pièces de l'array $_FILES['file'] ? Merci d'avance
Cordialement
A voir également:
- Recupération de la valeur d'un input array() de type file
- .Dat file - Guide
- Host file - Guide
- .Bin file - Guide
- Iso file - Guide
- Convertisseur récupération de texte - Guide
1 réponse
Salut,
Effectivement le tableau $_FILES ne retourne qu'une seule entrée lors de l'upload de plusieurs fichiers.
Ce tableau est initialisé de manière un peu particulière, tu peux avoir plus de détails sur la doc : https://www.php.net/manual/fr/features.file-upload.multiple.php
Je t'invite notamment à lire le premier commentaire de cette doc qui te propose une fonction pour ré-indexer le tableau $_FILES.
Bonne journée
Effectivement le tableau $_FILES ne retourne qu'une seule entrée lors de l'upload de plusieurs fichiers.
Ce tableau est initialisé de manière un peu particulière, tu peux avoir plus de détails sur la doc : https://www.php.net/manual/fr/features.file-upload.multiple.php
Je t'invite notamment à lire le premier commentaire de cette doc qui te propose une fonction pour ré-indexer le tableau $_FILES.
Bonne journée
Merci pour votre réponse,
En fait si j'ajoute deux input de type file manuellement sans passer par jquery je récupère bien le deux fichiers dans un array $_FILES['file']
Mais c'est quand la deuxième champ input ajouter à partir du bouton jquery je récupère q'un seule fichier !
On dirait qu'il ne fait pas le lien entre le deuxième champ input et le formulaire <form> !
Avez-vous une piste ?
Merci
<?php foreach($_FILES['file']['name'] as $fileName) { echo $fileName . '<br>'; } ?> <form method="post" enctype="multipart/form-data"> <span class="piece"><input type="file" name="file[]" /></span> <input type="submit" value="Envoyer" /> </form> <p><button id='prependTo'>Ajouter une pièce jointe</button></p> <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script> <script type="text/javascript"> $("#prependTo").click(function () { $("<input type='file' name='file[]'/><br/>").prependTo('.piece'); }); </script>En petite remarque j'aurais plutôt utiliser appendTo à la place de prependTo pour que les champs supplémentaires s'affichent à la fin du formulaire plutôt que au début, mais ceci n'as aucune incidence concernant le fonctionnement de ton formulaire.
c'est pourquoi les champs ajoutées n'ont pas été pris en compte !
Je veux regarder pour appendTo,
Merci :)