Developpez.com - Rubrique JavaScript

Le Club des Développeurs et IT Pro

Mozilla ArchiveAPI, pour la lecture de fichiers archives

Dans votre navigateur

Le 2012-10-11 14:02:05, par vermine, Expert éminent sénior
Mozilla ArchiveAPI
pour la lecture de fichiers archives dans votre navigateur.

L'API ArchiveAPI permet de lire des archives (Zip, Tar, etc. ) directement dans votre navigateur. Elle vient compléter la liste des WebAPI, l'initiative de Mozilla pour rendre le Web plus performant.

Fondamentalement, il y a un objet ArchiveReader et lorsqu'il réussit à lire le contenu d'un fichier archive, nous pouvons alors extraire les données des fichiers ou avoir une prévisualisation du contenu de chaque fichier, etc.

Exemple de code :

Code javascript :
1
2
  
var archiveFile = new ArchiveReader(archiveFileReference), fileNames = archiveFile.getFilenames();

Il y a également la possibilité d'intercepter le succès ou l'échec de l'opération avec onsuccess et onerror.

Démo. Cependant, l'API n'est pour l'instant parfaitement opérationnelle que sur Firefox Aurora et Firefox Nightly.



Code source.

L'API est annoncée dans la nouvelle catégorie du site de Mozilla Hacks : Bleeding Edge. Cette catégorie couvre les technologies/caractéristiques/API qui n'ont pas encore été commencées dans Firefox ou un autre navigateur Web, en version officielle, mais qui, dans la plupart des cas, ont leur première implémentation dans Firefox Nightly ou Firefox Aurora. L'objectif étant d'avoir des commentaires et des retours utilisateurs.

Source : https://hacks.mozilla.org
  Discussion forum
11 commentaires
  • redcurve
    Membre extrêmement actif
    Je ne vois pas l'utilité de la chose.
  • transgohan
    Expert éminent
    Envoyé par redcurve
    Je ne vois pas l'utilité de la chose.
    A l'ère du HTML5 et des applis presque tout local cela en a pourtant une bonne : la diminution de la taille en localStorage.
  • thelvin
    Modérateur
    Envoyé par transgohan
    A l'ère du HTML5 et des applis presque tout local cela en a pourtant une bonne : la diminution de la taille en localStorage.
    Euh, non, a priori si ça prend tellement de place les navigateurs peuvent très bien compresser sans qu'on leur demande, 'faut pas déconner.

    Non, l'idée c'est que les applis web traitent de plus en plus souvent des fichiers. Image, vidéo, texte, XML... Traiter des zip n'est pas infaisable mais ça exige de programmer son propre zippeur/dézippeur en JavaScript, ce qui est monstrueusement chiant et pas super efficace.
    Avec cette API on peut penser que Mozilla gèrera le zip en natif, et peut-être d'autres.

    Ça me semble pas révolutionnaire, mais bon, c'est dans l'ère du HTML5 et du bureau dans une webapp.
  • transgohan
    Expert éminent
    On parle de la même chose, jamais je n'ai cité le cache...
  • thelvin
    Modérateur
    Envoyé par transgohan
    On parle de la même chose, jamais je n'ai cité le cache...
    T'as cité localStorage, quelle différence -_-° ?
  • transgohan
    Expert éminent
    Le localStorage est tout à fait différent du cache. Ta méprise vient surtout du fait de l’appellation qui est fortement synonyme de cache, mais la différence est que tout s'enregistre dans le cache sans que tu ais ton mot à dire alors que ce n'est pas le cas du localStorage. De plus des algos tournent pour vider les éléments inutiles du cache (bien que quand je vois la taille de mon cache des fois j'ai peine à croire que ça existe vraiment), donc ça serait bête de perdre des données applicatives stockées dedans.

    Regardes dans ton navigateur. Pour firefox tu auras deux boutons bien différents : données web et données applications.
  • thelvin
    Modérateur
    Bon sang, je sais bien que localStorage n'a rien à voir avec le cache, mais dans un cas comme dans l'autre, si ça devait être utile de le compresser, ce serait au navigateur d'en prendre la décision tout seul, sans que qui que ce soit le lui demande en JavaScript, c'est tout -_-°.
  • transgohan
    Expert éminent
    Envoyé par thelvin
    Bon sang, je sais bien que localStorage n'a rien à voir avec le cache, mais dans un cas comme dans l'autre, si ça devait être utile de le compresser, ce serait au navigateur d'en prendre la décision tout seul, sans que qui que ce soit le lui demande en JavaScript, c'est tout -_-°.
    Tu extrapoles un peu trop selon moi.
    Niveau serveur ce devrait aussi être de base que de gzipper toutes les réponses ?
    D'autant que qui dit archiver en permanence dit perte de temps, donc il faut que cela soit valable et là c'est le développeur qui est mieux placé pour définir ce qui l'est ou non par rapport au navigateur.
  • thelvin
    Modérateur
    Envoyé par transgohan
    Niveau serveur ce devrait aussi être de base que de gzipper toutes les réponses ?
    Modulo tout ce qui se compresse mal, idéalement oui.
    Or:
    - ce ne sont pas les solutions qui manquent pour laisser le serveur faire un choix logique sur, si oui ou non il devrait compresser (en supposant que le navigateur annonce qu'il saurait le lire)
    - ce n'est pas une "API d'archive." C'est "je compresse le unique fichier à envoyer, oui ou non."

    Envoyé par transgohan
    D'autant que qui dit archiver en permanence dit perte de temps, donc il faut que cela soit valable et là c'est le développeur qui est mieux placé pour définir ce qui l'est ou non par rapport au navigateur.
    En théorie je ne dis pas mais en pratique ça me semble assez léger. Mais bon passons.
    Dans ce cas-là il n'y a besoin d'aucune API d'archive. Il y a besoin d'un booléen "le truc que je te donne là, tu le compresses, oui/non."
  • transgohan
    Expert éminent
    Je vois où tu veux en venir. Cela se tient mais c'est un point de vue comme un autre.
    D'autres (comme moi) pensent qu'au lieu de fournir une voiture qui nous emmène automatiquement au boulot sans qu'on ai autre chose à faire que d'appuyer sur un bouton est moins bien que la voiture que l'on contrôle et dirige.
    Sachant que la cible est des développeurs je pense que l'API est mieux choisie qu'un module que l'on ne peut influencer (ou peu).