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é
[EMAIL PROTECTED]
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:[EMAIL PROTECTED]
Autres commandes : mailto:[EMAIL PROTECTED]