@ capgo/ 电容- zip
在您的 Capacitor app 中 Zip 和 unzip 文件, 可以在 iOS 和 Android 上免费使用, 在网页的浏览器中解析 .
🤖 建筑与AI编码代理? 安装 Capgo 技能 所以克劳德代码,代码,光标,副驾驶,或双子座CLI知道如何安装和使用
@capgo/capacitor-zip在您的电容应用程序中:npx skills add Cap-go/capgo-skills。然后问你的经纪人: 添加@capgo/capor-zip到我的Capacitor应用上并把它接上 代理设置指南 • 妇女 主机磁共振
主要特点
- 齐普数字 :
zip()将文件或文件夹压缩到归档中. - 解齐普数字 :
unzip()提取归档到目的文件夹 . - 土著图书馆: ZIPFoundation on iOS和zip4j在Android上.
- Android 的密码:AES-256在通过密码时加密了档案.
- 网络解析数字 :
unzip()在浏览器中工作,并单独下载每个文件,没有文件夹结构. - 进展活动数字 :
addListener('progress', ...)报告字节和文件进度zip财务报告和审定财务报表unzip(网:只提供unzip). - 平台: iOS,Android和Web. 互联网档案馆的存檔,存档日期2013-12-02.
zip()无法在网上查阅.
为什么是Capacitor Zip?
A 类 自由和开源选项 对于 Capacitor apps 中的 ZIP 文件操作 :
- 本地性能 - 使用平台-本地ZIP库进行快速压缩
- 密码保护 - Android上的AES加密支持(iOS即将到来)
- 跨平台 - 在iOS、Android和Web工作
- 类型脚本 - 包括全部类型脚本定义
- 现代 APIs - 以最新的7个标准建造
适合需要文件压缩,备份功能,数据导出,或安全文件传输的应用程序.
文档
这里有最完整的医生: https://capgo.app/docs/plugins/zip/ 页面存档备份,存于互联网档案馆
兼容性
| 插件版本 | 电容兼容性 | 维护 |
|---|---|---|
| 联合国 | 联合国 | ✅ |
| 页:1 | 页:1 | 应要求 |
| 页:1 | 页:1 | ❌ |
| 页:1 | 页:1 | ❌ |
说明: 此插件的主要版本沿用了Capacitor的主要版本. 使用匹配您的 Capacitor 安装的版本( 如 Capacitor 8 的插件 v8) 。 只有最新的主要版本得到积极维护.
安装
您可以使用我们的 AI 辅助设置安装插件 。 使用以下命令将 Capgo 技能添加到您的 AI 工具 :
npx skills add https://github.com/cap-go/capacitor-skills --skill capacitor-plugins
然后使用下列提示:
Use the `capacitor-plugins` skill from `cap-go/capacitor-skills` to install the `@capgo/capacitor-zip` plugin in my project.
如果您更喜欢手动设置,请通过运行以下命令来安装插件,并遵循下面的平台特定指令:
npm install @capgo/capacitor-zip
npx cap sync
进度倾听器
import { CapacitorZip } from '@capgo/capacitor-zip';
const listener = await CapacitorZip.addListener('progress', (event) => {
const percent = Math.round(event.progress * 100);
console.log(`${event.operation} ${percent}%`, event.currentFile ?? '');
});
try {
await CapacitorZip.zip({ source: '/path/to/folder', destination: '/path/to/archive.zip' });
} finally {
await listener.remove();
}
API 密码
用于压缩和取出zip档案的Capacitor Zip插件.
为本地 ZIP 文件操作提供平台特定执行:
- iOS: 使用 ZIPFoundation(不支持密码保护)
- Android: 使用有 AES 加密支持的 zip4j
- Web: 使用zip.js(只使用unzip,触发下载)
添加倾听器( “ 进度 ” ,...)
addListener(eventName: 'progress', listenerFunc: (event: ZipProgressEvent) => void) => Promise<PluginListenerHandle>
听到进度更新时同时 zip 或者说 unzip 正在运行.
行动开始前登记 事件在网络上表现得最好(只有unzip).
每个活动包括: operationId, (中文(简体) ), source,以及 destination 当多个操作同时运行时, 您可以过滤 .
传递一个独有 operationId 每个电话,如果你提供自己的.
| 参数 | 类型 | 说明 |
|---|---|---|
eventName | 'progress' | 事件名称( E)progress) (中文(简体) ). |
listenerFunc | (event: ZipProgressEvent) => void | 打电话 ZipProgressEvent 有效载荷(包括 loaded, (中文(简体) ), total,以及 lengthComputable 喜欢 ProgressEvent) (中文(简体) ). |
回返情况: Promise<PluginListenerHandle>
自: 8.2.0 (中文(简体) )
zip(...)
zip(options: ZipOptions) => Promise<void>
压缩一个文件或目录以创建 ZIP 归档.
从源文件或目录创建压缩归档。 存档 如果源是一个文件夹,则将包含整个目录结构.
平台专用说明:
- iOS:不支持密码保护. 如果提供密码,就会被忽略并登录警告.
- Android:在提供密码时支持AES-256加密.
- 网:不支持. 如果调用, 则丢出错误 .
| 参数 | 类型 | 说明 |
|---|---|---|
options | ZipOptions | - zip操作的配置 |
自: 7.0.0 (单位:千美元)
unzip(...)
unzip(options: UnzipOptions) => Promise<void>
提取 ZIP 归档到指定的目的目录 .
从 ZIP 归档中提取所有文件和文件夹,同时保存 目录结构。 如果目标目录不存在,则创建该目录.
平台专用说明:
- iOS:支持标准ZIP档案. 不支持密码保护的档案; 忽略提供的密码 .
- Android:支持AES加密的有密码的档案. 包括拉链滑行脆弱性保护.
- Web:将每个文件单独下载到浏览器的下载文件夹. 无法创建目录结构 .
| 参数 | 类型 | 说明 |
|---|---|---|
options | UnzipOptions | - 解析操作的配置 |
自: 7.0.0 (单位:千美元)
获取 PluginVersion ()
getPluginVersion() => Promise<{ version: string; }>
获取本地插件版本 .
返回本地插件代码的版本, 它遵循 Capacitor 主要版本(如Capacitor 7.x的7.0.0).
回返情况: Promise<{ version: string; }>
自: 7.0.0 (单位:千美元)
接口
插件听筒
| Prop | 类型 |
|---|---|
remove | () => Promise<void> |
Zip 进步活动
载荷释放的进展 progress 收听时 zip 财务报告和审定财务报表 unzip。 。 。 .
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
operationId | string | 特殊编号 zip 或者说 unzip 电话导致这个事件。 在使用时用此来区分并行操作 addListener。 。 。 . | 8.3.0 (单位:千美元) |
source | string | source 从路径 zip 或者说 unzip 选项. | 8.3.0 (单位:千美元) |
destination | string | destination 从路径 zip 或者说 unzip 选项. | 8.3.0 (单位:千美元) |
operation | 'zip' | 'unzip' | 字节是否正在被压缩或提取 . | |
loaded | number | 迄今处理的字节( 已知时未压缩大小) 。 与 ProgressEvent.loaded 在网络平台. | |
total | number | 已知时操作的总字节数, 否则 0。含义与 ProgressEvent.total 在网络平台. | |
lengthComputable | boolean | 是否为 total (或文件总计)代表此操作的已知长度. 与 ProgressEvent.lengthComputable。 。 。 . | |
progress | number | 比率从 0 改为 1 基于字节 total > 0,否则在可用时文件数. | |
currentFile | string | 正在处理的条目的路径或名称 . | |
filesCompleted | number | 迄今完成的档案条目数量. | |
filesTotal | number | 档案中已知的总条目 . |
Zip 选项
创建 ZIP 归档的选项 .
| Prop | 类型 | 说明 | 默认 | 自兹 |
|---|---|---|---|---|
source | string | 要压缩的文件或目录的路径 。 这可以是相对于应用程序工作目录的绝对路径或路径. 如果源是一个目录,其所有内容在保留目录结构的同时会被递归压缩. 平台特有注释:- iOS:使用文件://URL或绝对路径. 相对路径由应用的文档目录解决. - Android:对通过Android存储访问框架访问的文件使用绝对文件路径或内容://URIs. - 网络:不支持。 关于iOS和Android, file:// URL( 例如来自 Cordova) FileEntry.nativeURL)和%-编码路径段在zip/unzip运行前实现文件系统路径正常化. | 7.0.0 (单位:千美元) | |
destination | string | 创建 ZIP 归档的路径 。 目的地路径必须包括.zip文件扩展名. 如果母目录不存在,则会自动创建. 平台特有注释:- iOS:使用文件://URL或绝对路径. 相对路径由应用的文档目录解决. 使用绝对文件路径。 插件将创建任何缺失的父目录 。 - 网络:不支持。 关于iOS和Android, file:// URL 和 %- 编码路径段在 zip 运行前正常化为文件系统路径 . | 7.0.0 (单位:千美元) | |
password | string | 加密 ZIP 存档的可选密码 。 提供后,归档会被加密并需要此密码来提取. 在Android上使用AES-256加密. 平台特有说明: - iOS:不支持密码保护. 密码将被忽略, 警告会被登录 。 - Android:通过zip4j库支持AES-256加密. 提取时必须提供密码 。 - 网络:不支持. | 7.0.0 (单位:千美元) | |
includeParentFolder | boolean | 是否在 ZIP 归档中包含父文件夹 。 当真实( 默认) 时, 源文件夹本身成为归档中的根目录 。 当错误时,仅包含源文件夹的内容为根级. 此选项仅适用于源是一个目录 。 对于单个文件,此选项被忽略 . | true | 8.0.5 (中文(简体) ) |
onProgress | ((event: ZipProgressEvent) => void) | 仅为此zip操作调用进度更新 。 更喜欢这个 addListener('progress') 当一次运行多个操作时。 听者自动注册并删除. | 8.3.0 (单位:千美元) | |
operationId | string | 可选操作id. 如果提供,它必须是同时提供的独特产品 zip 财务报告和审定财务报表 unzip 打电话 省略时自动生成 id . | 8.3.0 (单位:千美元) |
解析选项
提取 ZIP 归档的选项 .
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
source | string | ZIP 归档路径取出 。 来源必须是有效的 ZIP 文件 。 如果文件不存在或被损坏,操作会因出错而失败. 平台特有注释:- iOS:使用文件://URL或绝对路径. 相对路径由应用的文档目录解决. - Android:使用绝对文件路径或内容:// 通过Android存储访问框架访问文件的 URI. - Web:使用HTTP/HTTPS URL. 文件会在浏览器中取出并提取. 关于iOS和Android, file:// URL( 例如来自 Cordova) FileEntry.nativeURL) 和 %- 编码的路径段在unzip 运行前实现文件系统路径的正常化 . | 7.0.0 (单位:千美元) |
destination | string | 将提取文件的目录路径 。 目的地目录如果不存在,将会被创建. 归档中的所有文件和文件夹都会被取出,同时保留目录结构. 平台特有注释:- iOS:使用文件://URL或绝对路径. 相对路径由应用的文档目录解决. 使用绝对文件路径。 包括防止拉链滑行弱点。 - 网页:不适用。 文件被单独下载到浏览器的下载文件夹. 关于iOS和Android, file:// URL 和 %- 编码路径段在 unzip 运行前实现文件系统路径正常化 . | 7.0.0 (单位:千美元) |
password | string | 用于解密密码保护的档案的可选密码. 如果 ZIP 归档是用密码加密的, 则需要 。 如果密码不正确, 提取会因出错而失败 。 平台特有说明:- iOS:不支持密码保护的ZIP档案. 如果提供密码,则忽略并记录警告。 - Android:支持使用zip4j或标准密码保护的ZIP创建的AES加密档案. - 网络:不支持。 无法在浏览器中提取密码保护的档案 . | 7.0.0 (单位:千美元) |
onProgress | ((event: ZipProgressEvent) => void) | 仅为此未zip 操作调用进度更新 。 事件在网络上表现得最好(只有unzip). 更喜欢这个 addListener('progress') 当一次运行多个操作时。 听者自动注册并删除. | 8.3.0 (单位:千美元) |
operationId | string | 可选操作id. 如果提供,它必须是同时提供的独特产品 zip 财务报告和审定财务报表 unzip 打电话 省略时自动生成 id . | 8.3.0 (单位:千美元) |
使用量
基本齐平
import { CapacitorZip } from '@capgo/capacitor-zip';
// Zip a directory
await CapacitorZip.zip({
source: '/path/to/directory',
destination: '/path/to/output.zip'
});
// Zip a single file
await CapacitorZip.zip({
source: '/path/to/file.txt',
destination: '/path/to/output.zip'
});
有密码的 Zip
import { CapacitorZip } from '@capgo/capacitor-zip';
await CapacitorZip.zip({
source: '/path/to/directory',
destination: '/path/to/output.zip',
password: 'mySecurePassword123'
});
基本 Unzip
import { CapacitorZip } from '@capgo/capacitor-zip';
await CapacitorZip.unzip({
source: '/path/to/archive.zip',
destination: '/path/to/extract'
});
解开密码
import { CapacitorZip } from '@capgo/capacitor-zip';
await CapacitorZip.unzip({
source: '/path/to/encrypted.zip',
destination: '/path/to/extract',
password: 'mySecurePassword123'
});
获取插件版本
import { CapacitorZip } from '@capgo/capacitor-zip';
const { version } = await CapacitorZip.getPluginVersion();
console.log('Plugin version:', version);
平台支持
| 平台 | 支助 | 密码保护 | 页:1 |
|---|---|---|---|
| iOS系统 | ✅ | ❌ | 使用 ZIPFoundation 库( 不支持密码字) |
| 机器人 | ✅ | ✅ | 使用 zip4j 库保存密码保护的档案, 标准 Java ZIP 非加密 |
| 网页 | ⚠️ | ❌ | 有限支持 - 仅触发文件下载 |
平台限制
iOS系统
- 密码保护的档案不支持当前 ZIPFoundation 库
- 如果提供密码, 则会忽略密码并发出控制台警告
机器人
- 通过zip4j对使用 AES 加密的密码保护的 ZIP 档案提供全面支持
网页
网络实施有以下局限性:
- 齐普: 不支持( 显示出错)
- 解齐普: 为归档中的每个文件触发浏览器下载
- 密码: 不支持密码保护的档案
对于生产网络应用,考虑使用服务器侧解决方案进行zip操作.
文件路径
iOS系统
使用相对于应用程序文档目录或完整路径的路径 :
import { Filesystem, Directory } from '@capacitor/filesystem';
const { uri } = await Filesystem.getUri({
directory: Directory.Documents,
path: 'myfile.zip'
});
await CapacitorZip.unzip({
source: uri,
destination: Directory.Documents + '/extracted'
});
机器人
使用相对于应用程序的数据目录或完整路径的路径 :
import { Filesystem, Directory } from '@capacitor/filesystem';
const { uri } = await Filesystem.getUri({
directory: Directory.Data,
path: 'myfile.zip'
});
await CapacitorZip.unzip({
source: uri,
destination: Directory.Data + '/extracted'
});
处理错误
import { CapacitorZip } from '@capgo/capacitor-zip';
try {
await CapacitorZip.zip({
source: '/path/to/directory',
destination: '/path/to/output.zip'
});
console.log('Zip created successfully!');
} catch (error) {
console.error('Failed to create zip:', error);
}
依赖关系
iOS系统
- ZI 伙伴关系 - 提供ZIP压缩和AES加密
机器人
- 拉链4j - 提供密码保护的ZIP支持
网页
- 拉链.js - JavaScript ZIP 库(有限功能)
许可证
麻省理工学院
贷项
马丁·多纳迪乌为 队长