OVH Cloud OVH Cloud

existence & taille fichier client

15 réponses
Avatar
Asterbing
Y a t-il un moyen de tester l'existence et la taille d'un fichier client
avant upload ? -e et -s agissent côté serveur uniquement.

Ceci pour éviter le trafic inutile (upload, test sur serveur, puis
unlink si trop gros) et rendre compte à l'utilisateur au plus vite
(l'upload jusqu'à la taille limite autorisée pouvant prendre un certain
temps dans certains cas ; exemple : si j'accepte des fichiers de
plusieurs dizaines de Mo max).

5 réponses

1 2
Avatar
Asterbing
In article ,
says...
Ce n'est même pas sûr en CGI :

Servers MUST provide this metavariable to scripts if a "Content-Type"
field was present in the original request header. If the server
receives a request with an attached entity but no "Content-Type"
header field, it MAY attempt to determine the correct datatype, or it
MAY omit this metavariable when communicating the request information
to the script.



Donc si je précise explicitement enctype="multipart/form-data" ou
"application/x-www-form-urlencoded" dans le formulaire initiant la
requête, on peut considérer que Content-Type existera : exact ?

Avatar
Paul Gaborit
À (at) Wed, 19 Apr 2006 18:44:13 +0200,
Asterbing écrivait (wrote):
Donc si je précise explicitement enctype="multipart/form-data" ou
"application/x-www-form-urlencoded" dans le formulaire initiant la
requête, on peut considérer que Content-Type existera : exact ?


Non ! On ne peut rien garantir du comportement du navigateur
distant. Même si la RFC concernant HTTP imposait la présence de
Content-Type, rien ne garantit que le navigateur respecte cette RFC.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Asterbing
In article ,
says...
Y a t-il un moyen de tester l'existence et la taille d'un fichier client
avant upload ? -e et -s agissent côté serveur uniquement.

Ceci pour éviter le trafic inutile (upload, test sur serveur, puis
unlink si trop gros) et rendre compte à l'utilisateur au plus vite
(l'upload jusqu'à la taille limite autorisée pouvant prendre un certain
temps dans certains cas ; exemple : si j'accepte des fichiers de
plusieurs dizaines de Mo max).



Bon, après discussion dans ce fil + celui intitulé 'STDIN et CRLF selon
OS' + comp.lang.perl.misc, j'arrive à ces trois options pour limiter la
taille d'un fichier uploadé via formulaire multipart POSTé.

Je peux vérifier la taille du fichier uploadé et alerter l'utilisateur
si nécessaire en testant ça à tois endroits :
- CONTENT_LENGTH - taille STDIN hors upload data
- taille après parsing upload data
- taille effective d'un fichier temporaire créé après parsing

Qu'en pensez-vous ? Laquelle choisiriez-vous ou quel mixage ?

Avatar
Paul Gaborit
À (at) Thu, 20 Apr 2006 13:40:51 +0200,
Asterbing écrivait (wrote):
Je peux vérifier la taille du fichier uploadé et alerter l'utilisateur
si nécessaire en testant ça à tois endroits :


1)
- CONTENT_LENGTH - taille STDIN hors upload data


Oui (traitement au plus tôt).

2)
- taille après parsing upload data


Cette option ne devrait pas exister puisqu'elle nécessite de tout
stocker en mémoire...

3)
- taille effective d'un fichier temporaire créé après parsing


Oui (traitement a posteriori) avec une vérification dynamique de la
taille : dès que le fichier temporaire dépasse la limite, on stoppe
(option 3+).

Qu'en pensez-vous ? Laquelle choisiriez-vous ou quel mixage ?


Les options 1 et 3+.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Asterbing
In article ,
says...
Les options 1 et 3+.


Adopté :-)

1 2