Envoyé par : Raphael
Date : 21/04/2008 15:08
Bonjour, j'essaie d'utiliser le nouveau joujou disponible avec FF 3 et XF 1.9, à savoir le ZipWriter qui devrait permettre de créer une archive au format .zip.
J'ai suivi cet article : http://developer.mozilla.org/en/docs/nsI(..)
Notamment le dernier paragraphe : http://developer.mozilla.org/en/docs/nsI(..)
Voici mon code :
var Export_File = fp.file; var Export_Date = getFormatedDate(); Export_File.append("ycddev-"+Export_Date+".zip"); // On récupère la Base YCD en cours de développement var Database_File = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsILocalFile); Database_File.append("data"); Database_File.append("databases"); Database_File.append("database_dev.ycd"); // Initialisation du Composant "ZIP" var zipWriter = Components.Constructor("@mozilla.org/zipwriter;1", "nsIZipWriter"); var zipW = new zipWriter(); // Création de l'archive .zip try { zipW.open(Export_File.path, 0x04 | 0x08 | 0x20); }catch(e) { alert(e); } zipW.addEntryFile("", Components.interfaces.nsIZipWriter.COMPRESSION_DEFAULT, Database_File, false); zipW.close();
J'ai une erreur :
[Exception..."Could not convert Javascript argument arg0 [nsIZipWriter.open]" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: chrome://ylife/content/modules/preferences/libs/preferences_actions.js :: exportYcdDev :: line 152" data : no]
Voilà... est-ce parce que la méthode indiquée est pour ajouter un fichier à une archive sous-entendue existante ? Alors que dans mon cas, l'archive n'existe pas encore et que je veux la créer ? Si oui, comment faire ?
Merci d'avance =)
Envoyé par : David Marteau
Date : 21/04/2008 19:39
Non, c'est simplement que ton 1er argument de open n'est pas bon Le premier argument doit être un nsIFile, cf nsIZipWriter.idl
Dans ton cas c'est 'Export_File' et non pas 'Export_File.path' qu'il faut y utiliser.
Envoyé par : Raphael
Date : 22/04/2008 13:48
Merci beaucoup, effectivement ça résout l'erreur... MDC a donc un mauvais code non ? Il faudrait modifier... ?
Sinon, souci : Ca me créé un .zip dont la taille à l'air correcte puisque de 366 Ko (en manuel, ça me fait aussi un zip de 366 Ko) mais lorsque je l'ouvre, il n'y a rien à l'intérieur... Quand je veux extraire, j'ai une erreur :
mapname: conversion of failed
Je suis sous Ubuntu 6.10
Une idée du problème ?
Envoyé par : Raphael
Date : 07/05/2008 19:46
Un petit Up ?
Personne n'a encore fait mumuse avec le ZipWriter ?
Envoyé par : thefab
Date : 08/05/2008 09:29
Et si tu l'ouvres avec un autre programme ça marche ?
Met le code qui génère l'erreur sans ça c'est difficile de t'aider.
Envoyé par : Raphael
Date : 08/05/2008 10:50
Bien je ne crois pas que mon code JS provoque d'erreur puisque :
// Initialisation du Composant "ZIP" var zipWriter = Components.Constructor("@mozilla.org/zipwriter;1", "nsIZipWriter"); var zipW = new zipWriter(); // Création de l'archive .zip try { zipW.open(Export_File, 0x04 | 0x08 | 0x20); zipW.addEntryFile("", Components.interfaces.nsIZipWriter.COMPRESSION_DEFAULT, Database_File, false); zipW.close(); }catch(e) { alert(e); }
Ne provoque aucune erreur... et j'ai bien un fichier .zip qui fait a priori la bonne taille.
Mais lorsque je l'ouvre sous Ubuntu Hardy 8.04 (File roller 2.22 qui marche bien a priori), ben c'est vide.
Quand je veux extraire le contenu, la ligne de commande me retourne l'erreur :
mapname: conversion of failed
Je ne sais pas quoi dire d'autre... ?
Envoyé par : Raphael
Date : 14/05/2008 18:57
Oh le boulet... Je viens de comprendre que le "Path/For/This/File/In/Zip Archive" de addEntryFile() comprenait aussi le nom du fichier.
En fait, j'utilisais un champ vide car je voulais placer le fichier à la racine... Ce qui me créait en fait un fichier invisible et indécompressable...
En mettant un nom de fichier, ça va de suite mieux =)
Envoyé par : thefab
Date : 15/05/2008 22:44
Bien joué... Alors bientôt un gestionnaire d'archives en XUL
J'ai essayer mais j'avais le même comportement que toi.
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.