# UniZipTool
**Repository Path**: scenario-samples/uni-zip-tool
## Basic Information
- **Project Name**: UniZipTool
- **Description**: uni-app实现压缩/解压是实用工具类应用的高频使用场景之一,例如用户下载压缩文件后,需要先解压再使用。
本示例使用zlib模块实现压缩和解压功能。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-27
- **Last Updated**: 2026-01-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# uni-app实现压缩/解压示例
## 场景介绍
uni-app实现压缩/解压是实用工具类应用的高频使用场景之一,例如用户下载压缩文件后,需要先解压再使用。
本示例使用[zlib模块](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-zlib)实现压缩和解压功能。
## 效果预览
## 实现思路
1. 导入@/uni_modules/harmony-zip后,调用压缩/解压方法。
```Vue
```
2. 新建插件路径为:\uni_modules\harmony-zip\utssdk\app-harmony\index.uts,导出了compressFile和decompressFile函数。
```uts
import { BusinessError, zlib } from '@kit.BasicServicesKit';
export function compressFile(inputUrl : string, outputUrl ?: string) {
const inFile = inputUrl || '/data/storage/el2/base/temp/filename.xxx';
const outFile = outputUrl || '/data/storage/el2/base/temp/xxx.zip';
const options : zlib.Options = {
level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
};
try {
zlib.compressFile(inFile, outFile, options).then((data : void) => {
console.info(`compressFile success. data: ${outFile}`);
}).catch((errData : BusinessError) => {
console.error(`errData is errCode:${errData.code} message:${errData.message}`);
})
} catch (errData) {
const code = (errData as BusinessError).code;
const message = (errData as BusinessError).message;
console.error(`errData is errCode:${code} message:${message}`);
}
}
export function decompressFile(inputUrl : string, outputDir ?: string) {
const inFile = inputUrl || '/data/storage/el2/base/temp/xxx.zip';
const outFileDir = outputDir || '/data/storage/el2/base/temp';
const options : zlib.Options = {
level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION
};
try {
zlib.decompressFile(inFile, outFileDir, options).then((data : void) => {
console.info(`decompressFile success. data: ${outFileDir}`);
}).catch((errData : BusinessError) => {
console.error(`errData is errCode:${errData.code} message:${errData.message}`);
})
} catch (errData) {
const code = (errData as BusinessError).code;
const message = (errData as BusinessError).message;
console.error(`errData is errCode:${code} message:${message}`);
}
}
```
## 约束与限制
* 本示例支持API Version 20 Release及以上版本。
* 本示例支持HarmonyOS 6.0.0 Release SDK及以上版本。
* 本示例需要使用HBuilderX 4.87、DevEco Studio 6.0.0 Release及以上版本进行编译运行。
## 工程目录
```
├─App.vue // 应用配置,用来配置App全局样式以及监听、应用生命周期
├─index.html // 用于web加载渲染的root节点
├─main.js // Vue初始化入口文件
├─manifest.json // 应用相关配置
├─pages.json // 配置页面路由、导航条、选项卡等页面类信息
├─uni.scss // 内置的常用样式变量
├─harmony-configs // harmony工程定制化配置目录,每次编译执行HBuilderX都会检查这个目录,如果目录不存在则会自动创建。
│ └─entry
│ └─src
│ └─main
│ └─module.json5 // 应用配置文件,配置requestPermissions等信息
├─pages
│ └─index
│ └─index.vue // 首页
│
├─static // 静态资源文件
└─uni_modules // 插件目录,用于存放uni-app的插件
```
## 参考文档
[zlib.compressFile](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-zlib#zlibcompressfile9)
[zlib.decompressFile](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-zlib#zlibdecompressfile9)
**【关联的社区问题】**
https://developer.huawei.com/consumer/cn/forum/topic/0202197044028095396?fid=0109140870620153026