Configuration du serveur : Limiter la taille des fichiers chargés sur le serveur avec le fichier php.ini
Le chargement des fichiers sur un serveur, et en particulier la taille des fichiers uploadés, est soumis à plusieurs limitations au niveau de la configuration dudit serveur.
Ces paramètres limitatifs sont modifiables dans le fichier php.ini et peuvent être vérifiés avec la commande phpinfo() qui affiche tous les paramètres du serveur.
<?php phpinfo(); ?>
Les paramètres pris en compte pour maîtriser l'upload des fichiers sont les suivants :
upload_max_filesize : Fixe la taille maximale d'un fichier à charger (exprimée en octets).
post_max_size : Fixe le poids maximum des données envoyées par le formulaire (donc des fichiers chargés par formulaire sur le serveur). La valeur de post_max_size doit logiquement être supérieure ou égale à la valeur de upload_max_filesize
Vérifiez aussi la valeur du paramètre memory_limit qui fixe la mémoire maximum qu'un script peut allouer à une requête. La valeur de memory_limit doit être supérieure ou égale à la valeur de post_max_size.
Limiter la taille du fichier à uploader au niveau du formulaire HTML
Ci dessous, un exemple de formulaire d'upload de fichiers et traitement des données.
Il est possible de limiter, côté client, la taille des fichiers uploadés, tout en gardant à l'esprit que la taille max fixée côté client ne peut pas être supérieure à celle fixée par le serveur.
Pour fixer une taille limite sur le fichier à télécharger par le formulaire il faut ajouter un champs de type hidden et de name MAX_FILE_SIZE (avant la déclaration de l'input file), dont la valeur est la taille limite qu'on veut donner au fichier téléchargé (l'unité est l'octet).
Code HTML :
<form action="upload.php" method="post" name="import_fichier" enctype="multipart/form-data"/> <label> Charger un fichier (tous formats) : </label><br /> <input type="hidden" name="MAX_FILE_SIZE" value="104857600" /> <!-- Limite 100Mo --> <input type="file" name="mon_fichier" id="mon_fichier" /><br /> <input type="submit" value="Charger un fichier" /><br/> </form>
Limiter la taille du fichier uploadé en sortie de formulaire (partie PHP)
Nous attaquons ici le traitement des paramètres envoyés par le formulaire de téléchargement de fichiers.
Comme indiqué ci dessus, la vérification HTML n'étant pas suffisante, nous allons refaire un contrôle sur la taille du fichier que l'utlisateur a téléchargé en utilisant la fonction filesize qui calcule la taille d'un fichier.
Code PHP (fichier upload.php) :
<?php $repertoireDestination = "uploads/" ; $NomDuFichier = $_FILES["mon_fichier"]["name"]; $taille_max = 104857600; $taille_fichier = filesize($_FILES['mon_fichier']['tmp_name']); if ($taille_fichier > $taille_max){ echo "Vous avez dépassé la taille de fichier autorisée"; }else if ($NomDuFichier !=''){ if ( is_uploaded_file($_FILES["mon_fichier"]["tmp_name"])) { if (file_exists ($repertoireDestination.$NomDuFichier)){ echo 'Le fichier '.$NomDuFichier.' existe déjà<br/>'; }else{ if (!rename($_FILES["mon_fichier"]["tmp_name"], $repertoireDestination.$NomDuFichier)) { echo "Le déplacement du fichier temporaire a échoué"; } } } else { echo "Le fichier ". $NomDuFichier ." n'a pas été uploadé"; } } ?>
Laisser un commentaire
Participez-vous à la discussion?N'hésitez pas à contribuer!