本文概述
- 1.安装cordova-plugin-zip
- 2.使用插件
- 例子
1.安装cordova-plugin-zip为了将内容从zip文件提取到设备的某个目录中, 我们建议你使用cordova-plugin-zip插件。该插件在Android中使用java.util.zip和iOS中的SSZipArchive。
安装执行以下cordova命令的插件:
cordova plugin add cordova-plugin-zip
该插件适用于Android和iOS。如果你需要有关此插件的更多信息, 请访问Github上的官方存储库。
2.使用插件该插件在其全局变量zip.unzip中公开一个方法。此方法按以下顺序期望最多4个参数:
- ZipPath:要解压缩的zip文件的绝对路径。
- ZipExtractDirectory:应将文件提取到的文件夹的绝对路径。
- StatusCallback:该函数接收作为唯一参数的数字, 该数字通知文件是否成功解压缩(成功则为0, 失败则为-1)。
- ProgressCallback:每当减压进度更改时执行的函数。接收带有进度信息的对象作为第一个参数。
document.addEventListener('deviceready', function(){// All your code here ...}, false);
一旦确定将执行代码, 就可以继续为库的unzip函数提供参数:
// Path to the filevar ZipPath = "file:///storage/emulated/0/some-zipfile.zip";
// Path of the destination foldervar ZipExtractDirectory = "/storage/emulated/0/";
// Handle the result of the processvar StatusCallback = function(status){if(status == 0){// Everything OK}else if(status == -1){// Everything is wrong ...}};
// Handle the progress of the decompressionvar ProgressCallback = function(progressEvent){var percent =Math.round((progressEvent.loaded / progressEvent.total) * 100);
// Display progress in the console : 8% ...console.log(percent + "%");
};
// Unzip it !window.zip.unzip(ZipPath, ZipExtractDirectory, StatusCallback, ProgressCallback);
请注意, 源参数和目标参数都可以是从HTML File接口获得的URL, 也可以是设备上文件的绝对路径, 这意味着它们可以包含file://或不包含file://。
例子使用Android Cordova的FileBrowser插件, 我们将选择一个zip文件, 并将其内容提取到Android存储设备的根文件夹中:
document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady(){// When the user clicks some button to select the filedocument.getElementById("btn").addEventListener("click", () =>
{// Open the single file selectorwindow.OurCodeWorld.Filebrowser.filePicker.single({success: function(data){if(!data.length){// No file selectedreturn;
}// data = http://www.srcmini.com/Array with filepath// ["file:///storage/emulated/0/file.zip"]// Extract in the root folder of the storageprocessZip(data[0], "/storage/emulated/0");
}, error: function(err){console.log(err);
}});
}, false);
}/** * * @param zipSource Path to the zip file * @param destination Path where the content should be placed */function processZip(zipSource, destination){// Handle the progress eventvar progressHandler = function(progressEvent){var percent =Math.round((progressEvent.loaded / progressEvent.total) * 100);
// Display progress in the console : 8% ...console.log(percent + "%");
};
// Proceed to unzip the filewindow.zip.unzip(zipSource, destination, (status) =>
{if(status == 0){console.log("Files succesfully decompressed");
}if(status == -1){console.error("Oops, cannot decompress files");
}}, progressHandler);
}
【如何在Cordova中解压缩(zip)压缩文件】编码愉快!
推荐阅读
- 5+最好的画板,并在画布上手动绘制JavaScript和jQuery插件
- 5个JavaScript和jQuery倒计时插件
- 将条形码结果保存到剪贴板 - Android应用程序
- android TextView(如何避免换行())
- 在Android中加载大文本
- Android Wheel日期和时间选择器获取值
- Android - 按下按钮时将textview添加到布局
- 如何在Android中绘制弯曲文本
- 如何在Android中设置NestedScrollView的最大高度()