cocoon-users-fr mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Janet Yvan <Yja...@dsmdir.cea.fr>
Subject RE: Flowscript et Upload
Date Wed, 27 Jul 2005 15:10:23 GMT
Merci, ça marche nickel... 

J'ai juste changé le "getName()" en "getPath()" pour avoir le chemin complet
de la source...

Dans le <fb:save-form/>, j'ai besoin de récupérer le nom du fichier pour le
stocker dans le reste de mon flux XML, je dois faire ça ici ou je dois le
faire dans mon fichier .js avec un lookupWidget et une suite que je ne
connaitrais pas ?

Yvan


-----Message d'origine-----
De : Sylvain Wallez [mailto:sylvain@apache.org] 
Envoyé : mercredi 27 juillet 2005 13:58
À : users-fr@cocoon.apache.org
Objet : Re: Flowscript et Upload

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().getInputStrea
m(), 
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

---------------------------------------------------------------------
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