Javascript创建一个zip文件

时间:2016-09-09 19:12:03

标签: javascript angularjs ionic-framework jszip

我有一个离子应用程序,我需要在设备上创建一些文件的zip并将它们发送到节点服务器。

我正在尝试使用JSZip [http://stuk.github.io/jszip/]在设备上创建文件的zip。我有每个文件的完整路径,发送到filesList数组中的函数。

 // complete path of all the files that need to be zipped is in filesList array
    // Eg., file:///var/mobile/Containers/Data/Application/BACCA40A-56C4-4BE5-8C5D-1576960BD14B/Library/NoCloud/1473447800255.zip
      var zipFiles = function(filesList) {
                var uniqueFilename = Date.now();
                var zip = new JSZip();
                // create a zip with a unique name
                var zipFolder = zip.folder(uniqueFilename);
                //add files to the zip
                filesList.forEach(function(file) {
                   zipFolder.file(file);    
                })
var promise = null;
            if (JSZip.support.uint8array) {
              promise = zipFolder.generateAsync({type : "uint8array"});
              return promise;
            } else {
              promise = zipFolder.generateAsync({type : "string"});
              return promise;
            } 

       }   

然后在调用函数

myAPI.zipFiles(docList)
               .then(function(result) {
                   console.log('Zip created '+JSON.stringify(result)); 
               .catch(function(error) {
                 console.log('Error while creating zip '+error);
               });

我想在内存中创建一个zip(不需要将其保存在设备上)并将其发送到节点。

上面的代码导致了一个空的zip,即使filesList数组有5个文件,并且这些文件的路径也是有效的。

文档说,generateAsync方法返回的数据是Uint8Array。我是否需要做一些事情才能将其转换成拉链?

0 个答案:

没有答案