You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-fr@cocoon.apache.org by Philippe Guillard <pg...@citycita.net> on 2005/08/07 10:07:05 UTC
taille max pour les upload de fichiers
Bonjour,
La limitation de taille de l''upload' de fichiers dans web.xml permet
d'afficher un message d'erreur du conteneur en cas d'exces et me semble
la pour eviter la saturation du disque. Par contre au niveau de
l'application, CForms par exemple, j'ai besoin d'afficher un message
plus "propre" a l'utilisateur (qui aurait oublie de retailler sa photo
par example), comme le reste des validations du formulaire.
La solution que j'envisage est de limiter la taille au niveau web.xml
pour preserver les vrais abus sur des grosses tailles, et limiter la
taille reelle de mes upload au moment ou je les traite, donc verifier la
taille du fichier present dans le repertoire work au moment de son
traitement dans le flow.
Cette facon de voir est-telle bonne?
Merci d'avance,
Phil
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org
Re: taille max pour les upload de fichiers
Posted by Jean-Baptiste Quenot <jb...@anyware-tech.com>.
* Philippe Guillard:
> Quand l'upload est > a la limite dans web.xml, j'ai logiquement
> un page d'erreur de Jetty "Problem in creating the Request",
> est-t-il possible d'en faire quelquechose d'autre avec cocoon?
Même problème pour nous, c'est très gênant car totalement
incontrôlable depuis l'application.
Par contre il serait possible d'ajouter un paramètre à la servlet
Cocoon pour donner une URI de redirection en cas d'erreur, qu'en
pensez-vous?
--
Jean-Baptiste Quenot
Systèmes d'Information
ANYWARE TECHNOLOGIES
Tel : +33 (0)5 61 00 52 90
Fax : +33 (0)5 61 00 51 46
http://www.anyware-tech.com/
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org
Re: taille max pour les upload de fichiers
Posted by Sylvain Wallez <sy...@apache.org>.
Philippe Guillard wrote:
> Merci beaucoup Sylvain pour ces conseils.
> Une derniere question (comme a mon habitude..), toujours parce que je
> suis light sur les webapp conteneurs, et parce que j'ai vu sur ton
> blog que tu te penchais sur les messages d'erreurs :
> Quand l'upload est > a la limite dans web.xml, j'ai logiquement un
> page d'erreur de Jetty "Problem in creating the Request",
Hmm... en toute logique, ça devrait être une IOException:"Content length
exceeds maximum upload size"
> est-t-il possible d'en faire quelquechose d'autre avec cocoon?
A l'heure actuelle, non : les uploads sont traités dans CocoonServlet,
donc bien avant que Cocoon lui-même ait son mot à dire dans le
traitement de la requête. Je suis bien d'accord que ce n'est pas idéal
pour afficher des messages corrects.
Je disais dans une précédente réponse qu'il y a l'interface Part et les
implémentations PartInMemory et PartOnDisk. On pourrait avoir aussi une
InvalidPart qui signalerait un upload invalide, et dont toutes les
méthodes utiles lèveraient une exception, mais qui permettrait de
traiter ces problèmes au niveau applicatif et non pas au niveau servlet.
Le widget upload saurait bien évidemment gérer tout seul comme un grand
ces InvalidPart.
Qu'en penses-tu ? Je crois que je vais en causer sur la liste de
développement.
> Je suis dans cforms+portal, donc evidemment ca va pas du tout!
A propos du portal, on a en interne une version de Cocoon Forms avec
Ajax qui fonctionne dans le portail. Bientôt chez Apache :-)
> Petite note : je vois que Lepido est tres bien parti c'est bien ! Cela
> me parait le seul moyen pour ramener du monde pour que cocoon passe
> d'une utilisation qui me semble quasi exclusive de documentation
> Intranet a l'Internet!
Lepido (voir [1] si vous ne connaissez pas), les Cocoon stacktrace [2],
toutes ces choses sur lesquelles je travaille en ce moment ont un but
principal : faciliter l'utilisation de Cocoon ! C'est comme si on avait
une voiture avec un moteur v12 turbocompressé, mais un habitacle où tous
les fils et câbles sont apparents. Pas gênant pour les mécanos, mais pas
vraiment grand public. Alors on installe en ce moment des caches, du
métal brossé et bientôt du bois précieux :-)
PS: s'il y a des développeurs de plugins Eclipse sur la liste, ils sont
les bienvenus sur Lepido !
> J'ai choisi cocoon pour le 2eme cas et me dis regulierement que je
> suis fou!
Meuh non ! A moins que ça fasse 5 ans que je suis fou ;-)
Sylvain
[1] http://www.eclipse.org/lepido/
[2] http://www.anyware-tech.com/blogs/sylvain/archives/000207.html
--
Sylvain Wallez Anyware Technologies
http://people.apache.org/~sylvain http://www.anyware-tech.com
Apache Software Foundation Member Research & Technology Director
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org
Re: taille max pour les upload de fichiers
Posted by Philippe Guillard <pg...@citycita.net>.
Merci beaucoup Sylvain pour ces conseils.
Une derniere question (comme a mon habitude..), toujours parce que je
suis light sur les webapp conteneurs, et parce que j'ai vu sur ton blog
que tu te penchais sur les messages d'erreurs :
Quand l'upload est > a la limite dans web.xml, j'ai logiquement un page
d'erreur de Jetty "Problem in creating the Request", est-t-il possible
d'en faire quelquechose d'autre avec cocoon? Je suis dans cforms+portal,
donc evidemment ca va pas du tout!
Petite note : je vois que Lepido est tres bien parti c'est bien ! Cela
me parait le seul moyen pour ramener du monde pour que cocoon passe
d'une utilisation qui me semble quasi exclusive de documentation
Intranet a l'Internet! J'ai choisi cocoon pour le 2eme cas et me dis
regulierement que je suis fou!
Phil
Sylvain Wallez wrote:
> Sylvain Wallez wrote:
>
>> Philippe Guillard wrote:
>>
>>> Merci.
>>> J'ai donc ajoute ca a ma definition cform, peut etre pas propre mais
>>> me donne le resultat attendu.
>>
>>
>>
>>
>> Super! Quelques petites remarques toutefois:
>>
>> - upload.value est de type "PartOnDisk". Le "new File(upload.value)"
>> fonctionne parce PartOnDisk.toString() a la bonne idée de renvoyer le
>> nom du fichier sur lequel il pointe. Il serait plus robuste
>> d'utiliser directement "file = upload.file".
>
>
>
> En relisant l'API de org.apache.cocoon.servlet.multipart.Part, il y a
> encore plus simple en utilisant Part.getSize() :
> if (upload.value != null && upload.value.size > limit)...
>
> Au passage, rappelons que l'upload dans Cocoon peut être géré de deux
> façons (réglage dans web.xml) :
> - par défaut, stockage de l'upload dans un fichier temporaire, qui
> donne un PartOnDisk et qui fait qu'on peut utiliser "upload.value.file"
> - stockage en mémoire, qui donne un PartInMemory qui n'a pas la
> méthode getFile()
>
> Si l'appli doit pouvoir fonctionner avec l'une ou l'autre de ces
> configs, on utilisera donc l'API de l'interface Part qui fournit
> getSize() et getInputStream() mais pas getFile()...
>
> Sylvain
>
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org
Re: taille max pour les upload de fichiers
Posted by Sylvain Wallez <sy...@apache.org>.
Sylvain Wallez wrote:
> Philippe Guillard wrote:
>
>> Merci.
>> J'ai donc ajoute ca a ma definition cform, peut etre pas propre mais
>> me donne le resultat attendu.
>
>
>
> Super! Quelques petites remarques toutefois:
>
> - upload.value est de type "PartOnDisk". Le "new File(upload.value)"
> fonctionne parce PartOnDisk.toString() a la bonne idée de renvoyer le
> nom du fichier sur lequel il pointe. Il serait plus robuste d'utiliser
> directement "file = upload.file".
En relisant l'API de org.apache.cocoon.servlet.multipart.Part, il y a
encore plus simple en utilisant Part.getSize() :
if (upload.value != null && upload.value.size > limit)...
Au passage, rappelons que l'upload dans Cocoon peut être géré de deux
façons (réglage dans web.xml) :
- par défaut, stockage de l'upload dans un fichier temporaire, qui donne
un PartOnDisk et qui fait qu'on peut utiliser "upload.value.file"
- stockage en mémoire, qui donne un PartInMemory qui n'a pas la méthode
getFile()
Si l'appli doit pouvoir fonctionner avec l'une ou l'autre de ces
configs, on utilisera donc l'API de l'interface Part qui fournit
getSize() et getInputStream() mais pas getFile()...
Sylvain
--
Sylvain Wallez Anyware Technologies
http://people.apache.org/~sylvain http://www.anyware-tech.com
Apache Software Foundation Member Research & Technology Director
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org
Re: taille max pour les upload de fichiers
Posted by Sylvain Wallez <sy...@apache.org>.
Philippe Guillard wrote:
> Merci.
> J'ai donc ajoute ca a ma definition cform, peut etre pas propre mais
> me donne le resultat attendu.
Super! Quelques petites remarques toutefois:
- upload.value est de type "PartOnDisk". Le "new File(upload.value)"
fonctionne parce PartOnDisk.toString() a la bonne idée de renvoyer le
nom du fichier sur lequel il pointe. Il serait plus robuste d'utiliser
directement "file = upload.file".
- il y a "var file = ..." et "if (file2.length()...". Je suppose que
"file2" est une coquille dans le mail, mais que c'est bien "file" dans
le vrai code !
> <fd:validation>
> <fd:javascript>
> var success = true;
> var limit = 400000;//400K
> var upload = widget.lookupWidget("upload");
> if (upload.value!=null) {
> var file = new Packages.java.io.File(upload.value);
> if (file2.length() > limit) {
> upload.setValidationError(new
> Packages.org.apache.cocoon.forms.validation.ValidationError("SVP le
> poids de l'image est limite a 400K", false));
> success = false; }
> }
> return success;
> </fd:javascript>
> </fd:validation>
Sylvain
--
Sylvain Wallez Anyware Technologies
http://people.apache.org/~sylvain http://www.anyware-tech.com
Apache Software Foundation Member Research & Technology Director
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org
Re: taille max pour les upload de fichiers
Posted by Philippe Guillard <pg...@citycita.net>.
Merci.
J'ai donc ajoute ca a ma definition cform, peut etre pas propre mais me
donne le resultat attendu.
<fd:validation>
<fd:javascript>
var success = true;
var limit = 400000;//400K
var upload = widget.lookupWidget("upload");
if (upload.value!=null) {
var file = new Packages.java.io.File(upload.value);
if (file2.length() > limit) {
upload.setValidationError(new
Packages.org.apache.cocoon.forms.validation.ValidationError("SVP le
poids de l'image est limite a 400K", false));
success = false;
}
}
return success;
</fd:javascript>
</fd:validation>
Sylvain Wallez wrote:
> Philippe Guillard wrote:
>
>> Bonjour,
>>
>> La limitation de taille de l''upload' de fichiers dans web.xml permet
>> d'afficher un message d'erreur du conteneur en cas d'exces et me
>> semble la pour eviter la saturation du disque. Par contre au niveau
>> de l'application, CForms par exemple, j'ai besoin d'afficher un
>> message plus "propre" a l'utilisateur (qui aurait oublie de retailler
>> sa photo par example), comme le reste des validations du formulaire.
>> La solution que j'envisage est de limiter la taille au niveau web.xml
>> pour preserver les vrais abus sur des grosses tailles, et limiter la
>> taille reelle de mes upload au moment ou je les traite, donc verifier
>> la taille du fichier present dans le repertoire work au moment de son
>> traitement dans le flow.
>> Cette facon de voir est-telle bonne?
>
>
>
> C'est une approche intéressante. On pourrait même envisager que le
> validateur <fd:length> qui aujourd'hui fonctionne sur les nombres,
> soit aussi applicable aux fd:upload.
>
> Sylvain
>
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org
Re: taille max pour les upload de fichiers
Posted by Sylvain Wallez <sy...@apache.org>.
Philippe Guillard wrote:
> Bonjour,
>
> La limitation de taille de l''upload' de fichiers dans web.xml permet
> d'afficher un message d'erreur du conteneur en cas d'exces et me
> semble la pour eviter la saturation du disque. Par contre au niveau de
> l'application, CForms par exemple, j'ai besoin d'afficher un message
> plus "propre" a l'utilisateur (qui aurait oublie de retailler sa photo
> par example), comme le reste des validations du formulaire.
> La solution que j'envisage est de limiter la taille au niveau web.xml
> pour preserver les vrais abus sur des grosses tailles, et limiter la
> taille reelle de mes upload au moment ou je les traite, donc verifier
> la taille du fichier present dans le repertoire work au moment de son
> traitement dans le flow.
> Cette facon de voir est-telle bonne?
C'est une approche intéressante. On pourrait même envisager que le
validateur <fd:length> qui aujourd'hui fonctionne sur les nombres, soit
aussi applicable aux fd:upload.
Sylvain
--
Sylvain Wallez Anyware Technologies
http://people.apache.org/~sylvain http://www.anyware-tech.com
Apache Software Foundation Member Research & Technology Director
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org