Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

# manipulation du cache

Envoyé par : Mayo

Date : 02/04/2008 19:02

Re-bonjour,

Encore une question sur la manipulation des composants XPCOM. Je souhaiterais manipuler le cache du navigateur afin de pouvoir récupérer des images afin de pouvoir les manipuler.

Mon premier réflexe à été d'utiliser le composant "@mozilla.org/image/cache" et l'interface "imgICache". Jusque là j'arrive à avoir les informations que je souhaite: "type-mime" ainsi que l'existence de cette image en cache.

Par contre à l'étape d'après je souhaiterais manipuler cette image pour par exemple la copier ou l'uploader ailleurs. J'avais pensé récupérer son uri locale ou un objet de type "nsIOutputStream" qui correspond au fichier du cache.

après plusieurs heures de recherche je n'ai rien trouvé de concluant ...

merci d'avance.

Mayo

# Re: manipulation du cache

Envoyé par : David Marteau

Date : 02/04/2008 19:15

Pas une bonne idée et de tout manière l'accès à l'url te renverras sur le cache si nécessaire : regarde du coté XmlHttpRequest où bien utilise directement un nsIHttpChannel.

# Re: manipulation du cache

Envoyé par : Mayo

Date : 03/04/2008 19:19

En fait voici ma problématique: Je souhaiterais manipuler des images distantes avec le composant "mozilla.org/network/file-input-stream". Hors celui ci ne fournie que des interfaces qui gèrent que des fichiers local.

L'objectif étant de récupéré un élément distant (tel une image) d'une page HTML qui va s'afficher pour le ré-envoyer vers une autre serveur (d'où l'utilisation de "mozilla.org/network/file-input-stream".

La seul solution que j'ai trouvé est de downloader cette image en la copiant vers un répertoire local et ainsi pouvoir la manipuler afin de la ré-envoyer.

Mais je pense qu'il y a des solution plus "propre" afin d'éviter une copie supplémentaire vers le disque local (L'élément en question sera forcement en cache car il aura été "loader" avant lors de l'affichage de la page HTML). C'est pour cette raison que j'avais penser utiliser le cache d'une image pour arriver à mes fins.

Cordialement,

Mayo

# Re: manipulation du cache

Envoyé par : David Marteau

Date : 04/04/2008 19:12

'mozilla.org/network/file-input-stream' comme son nom l'indique est un stream depuis un *fichier*.

Il y a plein de types de streams utilisables pour ce qui t'intéresse. Si tu ne veux pas copier l'image dans un fichier utilise un nsIHttpChannel et un '@mozilla.org/storagestream;1' (nsIStorageStream) pour garder le buffer en mémoire.

Si tu utilise gecko 1.9 (FF3) utilise imgITools:

http://mxr.mozilla.org/seamonkey/source/modules/libpr0n/public/imgITools.idl

# Re: manipulation du cache

Envoyé par : Mayo

Date : 14/04/2008 18:11

Bonsoir,

Malgré la doc et ton aide je n'arrive toujours pas a trouver une solution clean.

Je vais tenter d'être plus claire dans ma problématique. voici le cheminement de mon process:

image sur serveur 1 ==> poste client ==> image sur serveur 2

Info complementaire: l'image du serveur 1 est forcement en cache car le client la visualisé avant.

Voici ce que j'ai mis en place:

recup de l' image sur serveur 1 via un "saveURI" ==> copie de l'image sur le poste client "image temporaire" (ça fait donc deux copie pour rien car l'image est déjà en cache) ==> envoie de l'image sur serveur 2 puis destruction de l'image temporaire sur le poste client

L'objectif que je me suis fixé est de pouvoir réussir à faire la même chose sans créer d'image temporaire.

L'idée est donc de récuperer le flux HTTP de l'image afin de le stocker dans un "stream", en gros cela reviendrais à vouloir Je me suis donc penché sur les élément que tu m'as donné mais je n'ai pas réussi à faire cela car:

  • file-input-stream fonctionne avec des objet de type file, hors à ce niveau de process je n'ai pas encore de "file".
  • nsIHttpChannel, d'aprés ce que j'ai vu sur la doc, cela ne permet que de manipuler des "headers" ou "statut" (pas de manipulation direct de reponse)
  • XmlHttpRequest, cela ne permet pas de récupérer un objet de type "file" directement exploitable par des interface XPCOM.
  • storagestream, cela aurait pu être nickel, mais je ne vois pas comment intercepter firefox afin de recuperer le flux de l'image qui se charge lorsqu'une page HTML est visitée.

En gros je tourne en rond je ne vois pas comment faire ... merci d'avance pour votre aide.

Cordialement, Mayo

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.