デバイス上にいくつかのファイルの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を作成し(デバイスに保存する必要はありません)、ノードに送信したいと思います。
filesList 配列に 5 つのファイルがあり、それらのファイルへのパスも有効であるにもかかわらず、上記のコードは空の zip になります。
ドキュメントによると、generateAsync メソッドによって返されるデータは Uint8Array です。これをzipに変換するために何かをする必要がありますか?