web-dev-qa-db-fra.com

Compter et limiter le nombre de fichiers téléchargés (entrée de fichier HTML)

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. :)

22
Biker John

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

8
GoldenNewby

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
}
7
Ritabrata Gautam

Pure Js alternatives qui le font et bien plus encore:

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 .

0
mikevoermans