J'ai ce formulaire de base de téléchargement de fichiers multiples bien connu. Quelque chose comme ca...
<input type="file" multiple="multiple" name="something[]" />
Existe-t-il un moyen (de préférence une option codée en dur) de limiter le nombre de fichiers que l'utilisateur peut sélectionner? Par limite, je veux dire strictement bloqué, pas seulement un avertissement si le nombre est dépassé.
Merci d'avance. :)
Vous pouvez implémenter une solution javascript pour vérifier le nombre de fichiers sélectionnés, que vous pouvez ensuite utiliser pour interdire le téléchargement sur le serveur. Il n’existera vraiment que des solutions côté client à ce problème, car rien n’empêche réellement un utilisateur de publier ces fichiers sur votre script php de toute façon. Vous pouvez spécifier une taille maximale de téléchargement, mais celle-ci n'est pas spécifique au nombre de fichiers téléchargés.
La meilleure solution consiste à mettre en œuvre une vérification javascript, en spécifiant une taille de téléchargement maximale raisonnable pour votre serveur http (ou en PHP), puis en ignorant tout fichier téléchargé s'il dépasse votre nombre maximal.
Lisez à propos de l'API de fichier HTML5 ici pour limiter le nombre de fichiers sélectionnés: http://dev.w3.org/2006/webapi/FileAPI/
Voici la documentation php.ini qui explique comment limiter la taille des téléchargements: http://php.net/manual/fr/ini.core.php
Comme suggéré dans les commentaires, consultez: http://php.net/manual/fr/ini.core.php#ini.max-file-uploads
nous savons tous que dans un tableau first element is stored in 0 th index, 2nd in 1st index......nth in (n-1)th index
maintenant vous ne pouvez pas prendre count($_FILES['something'])
qui retournera toujours 5 puisqu'il y a 5 clés dans le tableau
maintenant, la question est: que contient $_FILES['something']['name'][0]
?=>nom du premier fichier chargé
alors vérifiez comme
if(empty($_FILES['something']['name'][0]))
{
//checking whether a single file uploaded or not
//if enters here means no file uploaded
//so if you want you may put a check/validation here to make file
//upload a must in your website
}
if(isset($_FILES['something']['name'][5]))
{
//checking whether 6 files uploaded or not
//so here you can put a check/validation to restrict user from
//uploading more than 5 files
}
Pure Js alternatives qui le font et bien plus encore:
Plugin de téléchargement de fichier jQuery de bluimp . Utilisation: jquery file upload limitant le nombre de fichiers
Ils sont également disponibles sur https://cdnjs.com/
Certains plugins semblent aider à cela, tels que: Uploadify (basé sur flash) . Cependant, je n'ai pas suffisamment utilisé celui-ci ou les autres pour savoir s'ils peuvent limiter le nombre de téléchargements.
Plus d'infos sur Uploadify Multiple Uploads .