la directive post_max_size
Bonjour,
j'essaye de mettre en place un script d'upload de fichier, et voilà le problème que je rencontre :
Chaque fois que je tente d'uploader un fichier d'une taille supériere à la valeur de post_maxsize (fichier php.ini), mon tableau $_FILE est vide. de plus, je ne récupère aucun message d'erreur (meme avec error_reporting(E_All).
Comment faire pour tester ce cas (fichier uploadé de taille supérieure à post_max_size).?
Merci d'avance.
la directive post_max_size
Salut Julien, Salut les autres,
Merci pour l'info qui confirme malheureusement ce que je craignais.
J'ai donc visité le lien que tu m'as indiqué. La Je ne comprends franchement
pas la solution proposée :
<form action="edit.php?processed=1'>
Pour uploader un fichier, il faut utiliser la méthode POST. Or ajouter une variable (processed=1) comme si on utilisait la méthode GET ne sert à rien
(il me semble...).
Je viens de le vérifier par sécurité (mais je ne comprends peut-être pas tout...)
Pour moi, le mystère reste donc entier :
Lorsque la taille du fichier uploadé est supérieure à POST_MAX_Size,
comment puis-je faire pour déterminer si l'utilisateur a effectivement uploadé un fichier trop gros, ou si il n'a simplement pas uploadé de fichier ?
Je te fais part maintenant d'une petite réflexion :
Si mon $_FILES est vide, c'est peut-être parce que le fichier trop gros est
tout simplement refusé avant même d'être uploadé.
Si c'est le cas, peut-être que le navigateur informe le serveur à l'avance de la taille du fichier qu'il veut lui envoyer...
Mes recherches m'ont conduit à regarder ce que retourne des fonctions comme getallheaders() et apache_response_headers().
Chez moi (en local avec easyphp), apache_response_headers() ne retourne que la"signature" de php...
Par contre, getallheaders() retourne un tableau associatif dont l'une des
entrées est :
content-length => 16464... (nombre fictif) et qui semble correspondre à la taille totale du formulaire que le navigateur tente d'envoyer. Il ne reste plus donc qu'à comparer cette valeur avec POST_MAX_SIZE et le tour est joué...
Ou presque, car il reste un problème à résoudre :
Que se passe t-il si mon formulaire contient plusieurs fichiers à uploader
simultanément ?
Il est dans ce cas impossible de déterminer quel fichier dépasse la limite
fixée par POST_MAX_SIZE...
Je n'ai pas encore testé, mais je ne pense pas obtenir plus d'informations
avec getallheaders()...
Je vais voir ce que je peux trouver sur ce thème communication client/serveur, protocole HTTP, Mime...).
Si tu penses comme moi et si tu connais le sujet (moi très peu...), ton
aide et naturellement celle des autres est toujours la bienvenue.
Alain.