cocoon-users-fr mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Christophe Kermagoret <...@bluexml.org>
Subject Re: Problème avec Flowscript et renameTo()
Date Mon, 05 Dec 2005 10:59:13 GMT
Bonjour,
la fonction renameTo() peut ne pas fonctionner quand on travaille sur 
des partitions différentes (cf 
http://download.java.net/jdk6/doc/api/java/io/File.html#renameTo(java.io.File), 
valable aussi pour les versions précédentes du jsdk)).

Pour éviter ce problème qui finit par se poser tôt ou tard, tu as 
intérêt à réécrire le fichier que tu veux renommer comme je l'ai fait 
ici par exemple :
http://www.bluexml.org/viewcvs/viewcvs.cgi/cms/src/blocks/core/crud-engine/webapp/feature/form/cud/flow/common-utils.js?rev=1.4&content-type=text/vnd.viewcvs-markup

Regarde la fonction write.

Jean-Christophe


Aurélien DEHAY a écrit :
> Bonjour.
> 
> Je colle ici du code qui fonctionne chez moi(c)(r).
> 
> 
> function uploadFile() {
>     // On récupère le basedir, chemin où déposer le fichier
>     var basedir = cocoon.parameters["realPath"] + 
> cocoon.parameters["contextPath"] + "static/";
>     var urlbase = cocoon.parameters["contextUrl"] + "static/";
> 
>     // On instancie et affiche le formulaire
>     var form = new Form("backend/upload/form-definition.xml");
>     var k = form.showForm("protected-upload-remplir.form");
> 
>     // On récupère le modèle et le nom du fichier a uploader
>     var model = form.getModel();
> 
>     var filename = generateRandomSerial(5);
>     if (model.filename == null || model.filename == "") {
>         filename = filename + "-" + 
> form.lookupWidget("upload").getValue().getHeaders().get("filename");
>     } else {
>         filename = filename + "-" + model.filename;
>     }
> 
>     // Chemin complet du fichier a créer
>     var uploadedFilename = basedir + filename;
> 
>     // Test pour voir si le fichier existe déjà
>     if (new java.io.File(uploadedFilename).exists()) {
> 
>         // Le fichier existe => page d'erreur
>         cocoon.sendPage("protected-upload-file_exists.message", 
> {"filename": filename});
>     } else {
> 
>         // Le fichier n'existe pas, on continue, on vérifie si le
>         // champs upload contient bien quelquechose
>         if ((null != form.lookupWidget("upload")) && (null != 
> form.lookupWidget("upload").getValue())) {
>             // On loggue l'upload
>             myotisLogger("upload du fichier "+filename);
>             // On appelle la fonction de renommage pour mettre le
>             // fichier dans le répertoire d'upload
>             var aPart = form.lookupWidget("upload").getValue();
>             write(aPart, uploadedFilename);
> 
>             var bizData = { "completeFilename": urlbase+filename,
>                             "filename": filename
>             }
>             cocoon.sendPage("protected-upload-confirmer.message", bizData);
>         }
>         // Ici, on devrait peut-être mettre une page d'erreur
>     }
> }
> 
> function write(part, targetFilename) {
>     // Code pour renommer (déplacer) le fichier du dépôt temporaire du
>     // webapp server au fichier indiqué dans le targetFilename
> 
>     // On créé un nouveau fichier contenant l'upload
>     var srcFile = new java.io.File(part);
> 
>     // On créé un nouveau fichier avec pour nom le path du target
>     var targetFile = new java.io.File(targetFilename);
> 
>     // On créé l'arborescence au cas où elle n'existe pas
>     targetFile.getParentFile().mkdirs();
> 
>     // on effectue le renommage
>     srcFile.renameTo(targetFile);
> 
>     // On retourne le chemin du fichier créé
>     return targetFilename;
> }
> 
> Cdlt.


-- 

BlueXML
Jean-Christophe Kermagoret
Directeur associé
jck@bluexml.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