La décompression de fichiers à l'aide de phonegap zip.js

suis en utilisant PhoneGap Cordova 3.3.0 et la dernière version de zip.js. Le script est en mesure d'obtenir la liste des fichiers à l'intérieur de l'archive, mais est incapable d'obtenir des données binaires. Suis l'aide de la correction par Hugeen mais pas de chance.

function decompress(fullsavepath, filename){
    zip.useWebWorkers = false;
    file_system.root.getFile("app_cache/temp.zip", {}, function(fileEntry){
        fileEntry.file(function (file) {

            zip.createReader(new zip.BlobReader(file), function(reader) {

                //get all entries from the zip
                reader.getEntries(function(entries) {
                    if (entries.length) {
                        //Output zip file contents
                        for(var i=0; i<entries.length;i++){
                            console.log(entries[i].filename);
                        }

                        //Try to decompress file no. 3
                        console.log('---- entries[2] '+entries[2].filename);
                        entries[2].getData(new zip.BlobWriter(), function(unzipData){
                            console.log(unzipData);
                        },null, null);
                    }
                });
            }, null);

        })

    },null);
}

Voici mon journal de la console avec les messages:

Console: ----entries[2] photoalbum/bpage1.jpg at file:///android_asset/www/dl/index.html:315
Console: processMessage failed: Message: S01 File821048650 AUEsDBBQAAAAIAEFVCEMFqmCrQAsHAMa3BwASAAAA at file:///android_asset/www/cordova.js:1034
Console: processMessage failed: Error: TypeError: undefined is not a function at file:///android_asset/www/cordova.js:1035
Console: processMessage failed: Stack: TypeError: undefined is not a function
Console:     at inflate (file:///android_asset/www/dl/js/vendor/zip/zip.js:429:18)
Console:     at file:///android_asset/www/dl/js/vendor/zip/zip.js:600:16
Console:     at BlobWriter.init (file:///android_asset/www/dl/js/vendor/zip/zip.js:297:4)
Console:     at file:///android_asset/www/dl/js/vendor/zip/zip.js:596:12
Console:     at [object Object].<anonymous> (file:///android_asset/www/dl/js/vendor/zip/zip.js:203:5)
Console:     at file:///android_asset/www/plugins/org.apache.cordova.core.file/www/FileReader.js:352:20
Console:     at Object.callbackFromNative (file:///android_asset/www/cordova.js:292:54)
Console:     at processMessage (file:///android_asset/www/cordova.js:1029:21)
Console:     at Function.processMessages (file:///android_asset/www/cordova.js:1063:13)
Console:     at pollOnce (file:///android_asset/www/cordova.js:933:17) at file:///android_asset/www/cordova.js:1036

------ Mise à JOUR 2014-04-07 -------------

Dans la fin, nous avons utilisé une approche alternative pour résoudre le problème. Google a développé un plugin natif pour Android et iOS - https://github.com/MobileChromeApps/zip

C'est assez simple, et honnêtement l'un des rares plugins que nous avons utilisé, qui a réussi à faire ce que nous avions besoin sur le premier essai.

Exemple:

 zip.unzip("cdvfile://localstorage/downloaded.zip", 
           "cdvfile://localstorage/my_data/path/", 
           function(){
              console.log('Zip decompressed successfully');
           }
 );

PS: Cordova a depuis été mis à jour à 3.4.0 - Ma question initiale utilisé les chemins comme file:///android_asset/www qui a été remplacé par le nouveau cdvfile://

question stupide, mais juste au cas où : avez-vous d'ajouter la permission WRITE_EXTERNAL_STORAGE ?
Salut @QuickFix, oui, j'ai. Le fichier essaie de décompresser a d'abord été téléchargé à partir de l'adresse HTTP, alors ce script prend le dessus et décompressez-le.
Avez-vous fait des progrès sur ce point ?
Merci, je vais essayer!!!!
si vous avez résolu s'il vous plaît ajouter que répondre et il marque avec réponse sélectionnée. Merci

OriginalL'auteur James Wong | 2014-01-24