首先. jszip 是3.1版本 .egret 官网可以下载.以前用2.X 版本死活发布不了.各种问题, 搜了很多解决办法都没办法解决.有天想试下最新版本的, 看行不行. 结果还真成了. 主要是用于解压缩zip包.zip包里全是json文件
- 加载zip文件, 并解压.
RES.getResAsync('config_zip').then((data) => {
// 下载
JSZip.loadAsync(data).then((zipdata) => {
// 以文本形式解压
return zipdata.file('xxx.json').async('text')
}).then(text => {
// 转json格式
let jsonData = JSON.parse(text)
console.log(jsonData)
})
})
- 加载图片
RES.getResAsync('img_zip').then((data) => {
// 解压,读取
JSZip.loadAsync(data).then((zipdata) => {
// 把数据解析为base64
return zipdata.file('img/xxx.jpg').async('base64')
}).then(base64 => {
base64 = "data:image/png;base64," + base64
var img: eui.Image = new eui.Image();
img.source = base64;
this.addChild(img);
})
})
- 生成zip文件夹
var zip = new JSZip();
zip.file("Hello.txt", "Hello World\n");
// 创建images文件夹
var img = zip.folder("images");
// 二进制数据
var imgData = "R0lGODdhBQAFAIACAAAAAP/eACwAAAAABQAFAAACCIwPkWerClIBADs=";
img.file("smile.gif", imgData, { base64: true });
zip.generateAsync({ type: "blob" }).then((blob) => {
saveAs(blob, "example.zip")
})
jszip 发布到微信会出现几个问题:
1.createElementNS is not a function
createElementNS 不被支持,那么将所有 createElementNS 改为 createElement
document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );
// 改为 ==>
document.createElement( 'canvas' );
2.ReferenceError: JSZip is not defined
这个是微信里面不认window[xxx]的原因, 修改jszip.min.js开头部分
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();
// 改为 ==>
!function (a) { if ("object" == typeof exports && "undefined" != typeof module){
window.JSZip = a();
module.exports = a();
}
这里有我修改好的,可直接放入第三方库配合解压代码使用: https://download.youkuaiyun.com/download/u013013797/11974165