我有一个离子应用程序,我需要在设备上创建一些文件的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。我是否需要做一些事情才能将其转换成拉链?