更新记录

1.0.0(2026-11-05) 下载此版本

1.0.0

  • 首个版本,功能可用

平台兼容性

pk-zip 压缩解压套件

纯 JS zip/gzip 打包解包:手写 zip 容器协议(local header + central directory + EOCD)+ vendored pako 2.1.0(MIT AND Zlib)deflate 引擎。全端可用,与系统 unzip/node zlib 双向互通。

为什么做它

uniapp 生态没有纯 JS 的 zip 方案:原生插件要付费/编译,plus.zip 仅 App 端且能力有限。pk-zip 三端一致:导出记录、打包日志、离线资源包全场景覆盖。CRC32 逐条校验,坏包快速失败不产出脏数据。

快速上手

import zip from '@/uni_modules/pk-zip/js_sdk/index.js';

// 打包(字符串 / Uint8Array 混合,中文文件名 UTF-8 标记)
const z = zip.zipText({
  '说明.txt': '中文内容',
  'data.json': JSON.stringify({ ok: 1 }),
  'binary.bin': someUint8Array
});
// z.entries → [{ name, method: 'deflate'|'store', size, compressedSize, crc32 }]

// 解包
const u = zip.unzip(z.blob, { text: true });   // text:true 附带 UTF-8 解码
// 或快捷版
const files = zip.unzipText(z.blob).files;     // { '说明.txt': '中文内容', ... }

// 单流 gzip(日志/接口压缩)
const g = zip.gzip('要压缩的内容');
const back = zip.gunzip(g.data);

全部方法

方法 说明
zip(entries, opts) 打包。entries: [{ name, data }];opts: { level 0-9, date, compress:false }
unzip(blob, { text }) 解包 → [{ name, data, method, size }]
zipText(files, opts) 快捷:{ 'a.txt': '内容' } → zip
unzipText(blob) 快捷:全部转字符串 → { 'a.txt': '内容' }
gzip(data) / gunzip(data) gzip 单流,返回压缩率
deflate(data) / inflate(data) zlib 容器单流
stats(blob) 元信息:条目数、原始/打包大小、压缩率、文件名清单(不解压)
selfCheck() 中英文/二进制/空文件/深路径回环自检

互通验证(本插件测试即证)

  • 我们的 zip → 系统 unzip 命令解压 ✓
  • 系统 zip 压的包 → 我们解压 ✓
  • 我们的 gzip → node zlib.gunzipSync ✓;node gzip → 我们解 ✓
  • CRC32 与标准向量("123456789" → 0xCBF43926)及 node zlib 一致 ✓

错误码

E-ZP-01 缺文件名 · E-ZP-03 数据过短 · E-ZP-04 无 EOCD(不是 zip/已损坏) · E-ZP-08 未知压缩方法 · E-ZP-09 CRC/长度校验失败

边界说明:不支持 zip64(>4GB)、加密 zip、分卷 — 覆盖移动端 99% 场景,遇到即快速失败不产脏数据。

示例工程

example/ 为完整可跑工程。在线文档:https://plugins.cnajiu.cn/public/pk-zip.html

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

许可协议

MIT协议

暂无用户评论。