picture picture
décembre 9, 2011 (X)HTML 5 Commentaires

Téléchargement de fichier par formulaire : contrôler le poids des envois

Une des limitations des uploads en HTML / PHP est le poids des fichiers.

Tous les webmasters le savent, les fichiers de plus de 2MO provoquent des erreurs de téléchargement (voire des plantages du serveur) quand les paramètres PHP/Apache par défauts sont appliqués.
Il y a bien la possibilité de modifier en FTP le temps d’exécution des scripts ou le poids maximum autorisé en PHP (voir ici : « Tout, tout tout sur les .htaccess de base !« ), mais un certain nombre d’hébergeurs payants ou gratuit ne permettent pas l’utilisation des fichiers htaccess par sécurité.

Il reste donc une autre solution, qui consiste à contrôler le poids des fichiers mis en ligne par les utilisateurs de vos formulaire : c’est très simple en HTML / PHP

1ere étape : Insérer le poids maximum autorisé au niveau du formulaire HTML

Il suffit de rajouter un champ « hidden » suivant dans le formulaire AVANT le champ « file » de sélection du fichier :

<input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
									

L’attribut « value » indiquera ici le poids maximum autorisé.
Attention cette valeur est en octets !
Pour mémoire : 1 Ko  = 1024 octets (et non pas 1000 octets : ce serait trop simple ;-))
et donc 1MO  = 1048576 octets

En théorie celà suffit à bloquer l’envoi en cas de dépassement…

2eme étape : contrôler en PHP

En pratique celà dépend du navigateur de votre client, et il reste donc nécessaire de contrôler le poids du fichier sur le fichier destinataire du formulaire (celui dont vous avez donné l’adresse par l’attribut « action » de la balise « form »)

Le contrôle s’effectue par l’intermédiaire de la variable $_FILES  : $_FILES[‘nom-du-champ-upload’][‘size’] indique le poids du fichier téléchargé, il est donc simple d’en contrôler la valeur et de renvoyer sur la page d’envoi en cas de dépassement du poids souhaité…

Autre contrôle possible : si la variable $_FILES[‘nom-du-champ-upload’][‘error’] = 2, c’est que le poids indiqué dans la variable cachée $_POST[‘MAX_FILE_SIZE’] est dépassée… donc le traitement est le même : on renvoit l’utilisateur vers le formulaire, avec un gentil message d’erreur  :twisted: !

5 Responses to “Téléchargement de fichier par formulaire : contrôler le poids des envois”

5 Commentaires

  1. Dimitri dit :

    Hello ! Et pour le download de fichier via un formulaire traité en PHP ? Vous avez jamais eu de erreur 500 avec fichier introuvable lorsque le fichier est supérieur à 300MO ?
    Je suis chez OVH et mon formulaire permet de downloader un fichier en remplissant un formulaire. Le dossier contenant tous les fichiers est protégé grâce à un htaccess et à mon script PHP. Mais il semblerait qu’il y ai une limitation.
    Auriez-vous une piste pour m’aider à régler ce soucis ?

  2. gold price dit :

    Tous les webmasters le savent, les fichiers de plus de 2MO provoquent des erreurs de téléchargement (voire des plantages du serveur) quand les paramètres PHP/Apache par défauts sont appliqués. Il y a bien la possibilité de modifier en FTP le temps d’exécution des scripts ou le poids maximum autorisé en PHP (voir ici : « Tout, tout tout sur les .htaccess de base ! « ), mais un certain nombre d’hébergeurs payants ou gratuit ne permettent pas l’utilisation des fichiers htaccess par sécurité.

  3. webtolosa dit :

    Pour éviter les serveurs obèses ;-D

  4. mouaaaaaaaaa dit :

    controler le poid!!!!!! mouaaaa ze ne vois pas du tout pourquoi il faut touzour controler le poids :wink: :lol::lol::lol: :P:P:P

Commentaire

Name

Mail (ne sera pas publié)

Website

Laisser ces deux champs tels quels :
:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: