Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# probleme de path

Envoyé par : alien7

Date : 29/04/2006 19:07

Salut

Je comprends rien aux path de firefox, je suis perdu dans tout ca.

j'ai un path de ce type

C:\\dossier temp\\

mais le path doit etre de type

file://c:/dossier temp/ 

pour que le fichier soit sauvegarder.

Je dois le convcertir ou y'a deja des fonction pour ca ?

# Re: probleme de path

Envoyé par : thefab

Date : 30/04/2006 01:17

Hello,

Utilise nsILocalFile et initialise le avec initWithPath(chemin) et ça devrait suffire.

# Re: probleme de path

Envoyé par : alien7

Date : 30/04/2006 02:11

Bon je suis desolé mais j'ai pas tout compris.

function dl(url_fic, dest) {
var dlmgr = Components.classes['@mozilla.org/download-manager;1']
	.getService(Components.interfaces.nsIDownloadManager);
var ioService=Components.classes["@mozilla.org/network/io-service;1"]
	.getService(Components.interfaces.nsIIOService);
var dir = Components.classes["@mozilla.org/file/local;1"]
	.createInstance(Components.interfaces.nsILocalFile);
   dir.initWithPath("c:\\temp\\a.gif");
   var s_uri = ioService.newURI(url_fic, null, null);
   //var t_uri = ioService.newURI(dir, null, null);
   const nsIWBP = Components.interfaces.nsIWebBrowserPersist;
   var persist = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1']                            .createInstance(Components.interfaces.nsIWebBrowserPersist);
    var flags = nsIWBP.PERSIST_FLAGS_NO_CONVERSION |
           nsIWBP.PERSIST_FLAGS_REPLACE_EXISTING_FILES |
           nsIWBP.PERSIST_FLAGS_BYPASS_CACHE;
    persist.persistFlags = flags;
var ret = dlmgr.addDownload ( -1, s_uri, dir, 'test', null, null, -1, null, persist);
    persist.progressListener = ret;
    persist.saveURI(s_uri, null, null, null, null, dir);
}

# Re: probleme de path

Envoyé par : thefab

Date : 30/04/2006 03:53

Salut,

Je ne vois pas le problème avec tes chemins le code fonctionne. J'ai supprimé le download manager, je suppose que c'est un où l'autre: càd soit nsIDownloadManager, soit nsIWebBrowserPersist.

function dl()
  {
  const WBP = Components.interfaces.nsIWebBrowserPersist;

  var io = Components.classes["@mozilla.org/network/io-service;1"]
    .getService(Components.interfaces.nsIIOService);

  var source = io.newURI("http://site/fichier", null, null);

  var destination = Components.classes["@mozilla.org/file/local;1"]
    .createInstance(Components.interfaces.nsILocalFile);
  destination.initWithPath("C:\\Dossier\\Fichier");

  var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
    .createInstance(Components.interfaces.nsIWebBrowserPersist);

  persist.persistFlags = WBP.PERSIST_FLAGS_NO_CONVERSION |
    WBP.PERSIST_FLAGS_REPLACE_EXISTING_FILES |
    WBP.PERSIST_FLAGS_BYPASS_CACHE;

  persist.saveURI(source, null, null, null, null, destination);
  }

En passant bien sur les chemins en paramètre.

Maintenant si le but est d'afficher le download manager je peux pas t'aider, jamais utilisé.

initWithPath() le fichier n'est pas obligé d'exister, mais le dossier je pense que oui.

# Re: probleme de path

Envoyé par : alien7

Date : 30/04/2006 13:21

Ok ca me convient parfaitement sans le download manager, en fait j'avais pris ca d'un exemple du site, je pensais qu'il en avait besoin du download manager, j'avais pas compris

Donc ca marche impec Merci beaucoup

# Re: probleme de path

Envoyé par : alien7

Date : 04/05/2006 15:15

Salut C'est encore moi :) Voilà je suis passé sur linux(Ubuntu) pour tester mon extension, tout marche exepté la sauvegarde du document :

persist.saveURI(source, null, null, null, null, destination);

Alors ext ce qu'il y'a quelque chose de plus à faire pour linux ? Merci d'avance

# Re: probleme de path

Envoyé par : thefab

Date : 05/05/2006 07:48

Hello,

Comment tu définis destination sous Linux ? Le dernier paramètre est un nsISupports (nsILocalFile ou nsIURI). Dans le cas d'un fichier local tu devrais pouvoir le récupérer avec nsIFilePicker.file

# Re: probleme de path

Envoyé par : alien7

Date : 05/05/2006 17:44

Oui j'ai trouvé l'erreur

var select = document.getElementById("folder");
var dir = select.value + "\\";
var url = dropdata.data.split("\n");
var tab = url[0].split("/");
var nameFile = tab[tab.length-1];
dl(url[0], dir + nameFile);

L'erreur vient de cette ligne :

 var dir = select.value + "\\";

Je sais pas comment recupérer le nom+extension d'une adresse URL. Ce code marche mais je sais pas si il est propre. Sinon là je dosi vérifier sur quel OS est l'utilisateur. Pour linux je dois mettre ca :

 var dir = select.value + "/";

Y'a pas une solution plus propre ? Merci

# Re: probleme de path

Envoyé par : thefab

Date : 06/05/2006 18:45

Y'a pas une solution plus propre ?

Heu, oui certainement mais j'ai pas compris ce que tu essayais de faire. Regarde de plus près nsILocalFile et nsIFile, il y a des méthodes pour initialiser depuis un chemin texte et pour récupérer uniquement le nom + extension (leafName )

# Re: probleme de path

Envoyé par : alien7

Date : 07/05/2006 11:36

En fait le code plus haut récupère le nom du fichier d'après une adresse url.

Exemple : http:://www.site.com/fichier.txt

la variable "nameFile" contiendra fichier.txt.

J'ai fait donc un split sur l'url, splité par "/". Voilà comment je récupère "fichier.txt". Donc est ce qu'il y'a une facon plus propre ? Est ce que nsILocalFile et nsIFile le permette ?

Merci

# Re: probleme de path

Envoyé par : Vilya

Date : 09/05/2006 21:35

Tient, je profite du fil pour exposer un "problème" similaire :)

J'utilise nsLocalFile pour récupérer l'adresse du répertoire des préférences.

var dossierPref = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile);
var dossierPrefPath = dossierPref.path;

J'obtiens qqch de la forme

c:\Documents and Settings\...\

Seulement j'aimerais ensuite utiliser ce chemin pour alimenter une datasource d'une liste qui demande donc le chemin sous la forme

file://c:/Documents and Settings/.../monRDF.rdf

Ca revient plus ou moins à la question initiale mais je n'ai pas l'impression que la solution soit la même :)

Si quelqu'un à une idée ^^

Bonne soirée,

Vilya

# Re: probleme de path

Envoyé par : PhilippeP

Date : 15/07/2006 17:59

alien7 a écrit:

En fait le code plus haut récupère le nom du
fichier d'après une adresse url.

Exemple : http:://www.site.com/fichier.txt

la variable "nameFile" contiendra fichier.txt.

J'ai fait donc un split sur l'url, splité par
"/".
Voilà comment je récupère "fichier.txt".
Donc est ce qu'il y'a une facon plus propre ?

Si, bien sûr : file.leafName (l'objet nsILocalFile créé contient de toute façon tout un tas de propriétés sur le fichier : son dossier, son nom, son path, etc.)

Bien à toi,

PhilippeP

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.