cocoon-users-fr mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sylvain Wallez <sylv...@apache.org>
Subject Re: Flowscript et Upload
Date Wed, 27 Jul 2005 11:57:55 GMT
vjaulin wrote:

> Janet Yvan wrote:
>
>> Si je comprends bien le code ci-dessous, il ne fait que récupérer le
>> path/nom du fichier uploadé. Ce dont j'ai besoin c'est de pouvoir 
>> prendre ce
>> fichier et le déplacer dans mon répertoire
>> $ma_pub_home/resources/images/$nouveau_nom.png
>>
>> Yvan
>>
>> --------------------
>>
>> Bonjour,
>>
>> il est possible de le faire à partir du binding en flowscript. :-)
>>
>> <fb:save-form>
>> var uploaded_file = cocoon.request.get("uploaded_file"); // 
>> org.apache.cocoon.servlet.multipart.PartOnDisk
>> if (uploaded_file!=null) {
>> var img_name = new java.io.File(uploaded_file).getName();
>>
>>
>> }
>>
>> </fb:save-form>
>>
>>
>> ---------------------------------------------------------------------
>> 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
>>
>>
>>
>>  
>>
> Oui,
>
> pour la copie du fichier une méthode ANT devrait suffire
>
> <fb:save-form>
> var uploaded_file = cocoon.request.get("uploaded_file"); // 
> org.apache.cocoon.servlet.multipart.PartOnDisk


Attention ! Ca ne fonctionne que si le formulaire n'est pas réaffiché 
suite à une erreur de validation. Le "PartOnDisk" est conservé par le 
widget, jusqu'à la fin, même si le fichier n'est pas envoyé par la 
requête en cours.

On peut le récupérer avec widget.getValue().

Au passage, le fait que ce soit un "PartOnDisk" est dépendant du fait 
qu'on a configuré l'enregistrement des uploads sur le disque dans 
web.xml. Dans le cas contraire, on aura un "PartInMemory", non associé à 
un fichier.

Pour une application vraiment robuste, on préférera donc utiliser 
uniquement la classe parente commune "Part" qui fournit entre autre 
getInputStream().

> if (uploaded_file!=null) {
> var img_name = new java.io.File(uploaded_file).getName();
>
> // Autant utiliser ce qui existe déjà
> Packages.org.apache.tools.ant.util.FileUtils.newFileUtils().copyFile(src, 
> dst);


On peut aussi utiliser
org.apache.avalon.excalibur.util.IOUtil.copy(widget.getValue().getInputStream(), 
new java.io.FileInputStream(dstFileName));

Qui est équivalent mais n'impose pas de mettre le ant.jar dans WEB-INF/lib

Sylvain

-- 
Sylvain Wallez                        Anyware Technologies
http://apache.org/~sylvain            http://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


Mime
View raw message