Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

MAX_FILE_SIZE...

8 réponses
Avatar
Patrice Chevée
Bonjour,

j'ai l'impression de déterrer un vieux serpent de mer tant qu'il semblerait
que ce sujet ait été déjà longuement débattu sur ce newsgroup, ainsi que sur
des sites d'entraide.

Cependant ma question est très stupide: à quoi peut bien servir la variable
MAX_FILE_SIZE que l'on met en input=hidden dans un formulaire d'envoi de
fichier? J'ai un moment pensé qu'elle servait au navigateur pour prévenir
l'utilisateur instantanément (par un prompt genre alert(...) en cas de
fichier trop gros. Ca n'aurait pas été si bête de mettre l'utilisateur au
courant aussitôt, plutot que de le laisser attendre après X minutes d'upload
(X pouvant être égal à plusieurs heures en cas de connexion lente...) que le
fichier soit refusé côté serveur.

MAis a priori non: cette variable ne sert pas à ça, et d'ailleurs les
navigateurs ne semblent pas lui accorder la moindre fonction particulière,
autre que celle d'être un paramètre hidden de formulaire. Donc ma question,
qui est double: cette variable est-elle utilisée par php pour faire
automatiquement la vérification de dépassement autorisé sans que le
webmestre aie à s'en occuper? (je ne connais pas php) Si oui, quel est
l'intérêt de la fournir en paramètre, quand on sait qu'il est très facile
pour un bidouilleur malintentionné de modifier un formulaire html en le
sauvegardant préalablement sur son disque dur? J'ai du mal à comprendre
pourquoi le webmestre ne pourrait pas simplement prévoir de vérifier par
script (php ou autre) la taille du fichier uploadé, en utilisant une
constante ou une variable inaccessible coté client, et ce afin de supprimer
(par une instruction adequat) le fichier en cas de dépassement de taille
autorisée.

Voila c'était ma question, un peu longue j'en suis désolé, mais aucune des
explications que j'ai pu lire à ce propos n'y a apporté la moindre réponse
(sûrement parce qu'elle est trop basique!)

Merci d'avance de vos réponses et bonne soirée,

PC

8 réponses

Avatar
SAM
Le 5/18/09 7:12 PM, Patrice Chevée a écrit :
Bonjour,

j'ai l'impression de déterrer un vieux serpent de mer tant qu'il semblerait
que ce sujet ait été déjà longuement débattu sur ce newsgroup, ainsi que sur
des sites d'entraide.

Cependant ma question est très stupide: à quoi peut bien servir la variable
MAX_FILE_SIZE que l'on met en input=hidden dans un formulaire d'envoi de
fichier? J'ai un moment pensé qu'elle servait au navigateur pour prévenir
l'utilisateur instantanément (par un prompt genre alert(...) en cas de
fichier trop gros. Ca n'aurait pas été si bête de mettre l'utilisateur au
courant aussitôt, plutot que de le laisser attendre après X minutes d'upload
(X pouvant être égal à plusieurs heures en cas de connexion lente...) que le
fichier soit refusé côté serveur.



Non, ça ne sert pas au navigateur.
(un attribut max_file_size à mettre dans la balise file me semblerait
plus approprié comme concept à faire comprendre coté client)

Ça peut servir au PHP ... si ...
cet input de nom 'MAX_FILE_SIZE' est disposé avant la balise file.
On peut alors supposer que le PHP prend connaissance de la taille maxi
autorisée puis de celle du fichier uploadé (avant même que l'upload ne
commence ? possiblement la taille du fichier est attachée au fichier ?)
et ainsi de juger d'interrompre l'upload avant la fin ?

Enfin, des explications seraient ici par exemple:
<http://forum.alsacreations.com/topic-20-23214-1-Resolu-utilisation-dun-champ-cache-MAXFILESIZE-pour-lupload.html>
<http://www.commentcamarche.net/faq/sujet-889-php-upload-de-fichiers>

MAis a priori non: cette variable ne sert pas à ça, et d'ailleurs les
navigateurs ne semblent pas lui accorder la moindre fonction particulière,
autre que celle d'être un paramètre hidden de formulaire. Donc ma question,
qui est double: cette variable est-elle utilisée par php pour faire
automatiquement la vérification de dépassement autorisé sans que le
webmestre aie à s'en occuper? (je ne connais pas php) Si oui, quel est
l'intérêt de la fournir en paramètre, quand on sait qu'il est très facile
pour un bidouilleur malintentionné de modifier un formulaire html en le
sauvegardant préalablement sur son disque dur?



Heu ... je connais des formulaires (au moins un) qui refusent de
fonctionner quand ils sont sortis de leur contexte (du site).

J'ai du mal à comprendre
pourquoi le webmestre ne pourrait pas simplement prévoir de vérifier par
script (php ou autre) la taille du fichier uploadé, en utilisant une
constante ou une variable inaccessible coté client, et ce afin de supprimer
(par une instruction adequat) le fichier en cas de dépassement de taille
autorisée.



Si, bien sûr.
voir lien 2 ci-haut.


Voila c'était ma question, un peu longue j'en suis désolé, mais aucune des
explications que j'ai pu lire à ce propos n'y a apporté la moindre réponse
(sûrement parce qu'elle est trop basique!)



Je sais pas moi, mais Google est pourtant très disert à ce sujet.


Merci d'avance de vos réponses et bonne soirée,

PC


Avatar
Olivier Masson
SAM a écrit :
Le 5/18/09 7:12 PM, Patrice Chevée a écrit :
Cependant ma question est très stupide: à quoi peut bien servir la
variable MAX_FILE_SIZE que l'on met en input=hidden dans un formulaire
d'envoi de fichier? J'ai un moment pensé qu'elle servait au navigateur


Non, ça ne sert pas au navigateur.
(un attribut max_file_size à mettre dans la balise file me semblerait
plus approprié comme concept à faire comprendre coté client)




Alors ça ! Je n'avais jamais entendu parler de ce truc moche...

Indiquer ce type d'info côté client, ça devient n'importe quoi.

Ça a l'efficacité d'une directive côté client, c-a-d que dans tous les
cas, il faudra doubler cette vérif côté serveur, donc perte de temps.
Avatar
Michael DENIS
Olivier Masson a écrit :
Indiquer ce type d'info côté client, ça devient n'importe quoi.



Si on se place dans l'optique du serveur, oui. Si on se place dans
l'optique du client, non, et même trois fois non. :-) A quoi bon laisser
un client envoyer plusieurs ko/Mo/... si l'on peut le prévenir tout de
suite que la taille trop élevée sera refusée par le serveur ?

--
Michaël DENIS
Avatar
Olivier Masson
Michael DENIS a écrit :
Olivier Masson a écrit :
Indiquer ce type d'info côté client, ça devient n'importe quoi.



Si on se place dans l'optique du serveur, oui. Si on se place dans
l'optique du client, non, et même trois fois non. :-) A quoi bon laisser
un client envoyer plusieurs ko/Mo/... si l'on peut le prévenir tout de
suite que la taille trop élevée sera refusée par le serveur ?




Pourquoi ? Que change cette valeur à cela ? Depuis quand mettre
MAX_FILE_SIZE dans un input permet de limiter côté client ? J'ai loupé
un paragraphe des spec de HTML4.01 ?
Avatar
Sergio
Olivier Masson a écrit :

Si on se place dans l'optique du serveur, oui. Si on se place dans
l'optique du client, non, et même trois fois non. :-) A quoi bon
laisser un client envoyer plusieurs ko/Mo/... si l'on peut le prévenir
tout de suite que la taille trop élevée sera refusée par le serveur ?




Pourquoi ? Que change cette valeur à cela ? Depuis quand mettre
MAX_FILE_SIZE dans un input permet de limiter côté client ? J'ai loupé
un paragraphe des spec de HTML4.01 ?



Mais ce serait sympa (spec HTML ou pas) que quand on envoie un fichier,
le navigateur puisse dire : "Polop ! Ton fichier là, il est trop gros,
il ne va pas passer !", avant d'avoir balancé un giga de données...

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
SAM
Le 5/19/09 2:31 PM, Olivier Masson a écrit :
Michael DENIS a écrit :
Olivier Masson a écrit :
Indiquer ce type d'info côté client, ça devient n'importe quoi.



Si on se place dans l'optique du serveur, oui. Si on se place dans
l'optique du client, non, et même trois fois non. :-) A quoi bon
laisser un client envoyer plusieurs ko/Mo/... si l'on peut le prévenir
tout de suite que la taille trop élevée sera refusée par le serveur ?




Pourquoi ? Que change cette valeur à cela ? Depuis quand mettre
MAX_FILE_SIZE dans un input permet de limiter côté client ? J'ai loupé
un paragraphe des spec de HTML4.01 ?




Il a bien été dit que : Non ça ne fait rien côté client.

Ça ne peut servir que coté serveur.
(et être utile pour le "client", l'utilisateur qui n'aura pas à attendre
que ses 32Mo sient uploadés alors que seulement 30 sont acceptés)
Le serveur étant supposé comparer l'input hidden max-file et l'input
file pour continuer ou interrompre l'upoad. (renvoi presque immédiat de
l'info de dépassement)

L'init.php pouvant être insuffisant pour certains cas d'espèces.
L'init.php pouvant être inaccessible (pages perso, blogs, forum...)

--
sm
Avatar
Pierre Goiffon
Michael DENIS wrote:
Si on se place dans
l'optique du client, non, et même trois fois non. :-) A quoi bon laisser
un client envoyer plusieurs ko/Mo/... si l'on peut le prévenir tout de
suite que la taille trop élevée sera refusée par le serveur ?



Oui !
Dommage, il semble que dans HTML 5 ça ne soit toujours pas prévu :
http://www.w3.org/TR/html5/forms.html#file-upload-state
(ni même un nb de fichiers max, une info qui paraitrait logique en
conjugaison avec l'attribut multiple)
Avatar
Olivier Masson
SAM a écrit :

Il a bien été dit que : Non ça ne fait rien côté client.




On est d'accord, donc je ne vois pas ce que la double remarque de Sergio
vient faire ici.
Ce MAX_FILE_SIZE en html, en plus d'être hors spec, est inutile puisque
utilisé côté serveur et qu'il est risqué (et donc, encore une fois,
inutile) de faire ce genre de réglage sachant que l'on devra le refaire
dans son script.