uni-app plus.zip.decompress解压有中文名称的大zip文件时报错

uni-app plus.zip.decompress解压有中文名称的大zip文件时报错

操作步骤:

  • 使用uni开发app,用的是5+的plus.zip.decompress方法,解压附件中的压缩包会报错,里面有中文文件名的文件

预期结果:

  • 正常解压,并且覆盖同目录下原来的内容

实际结果:

  • 报错{“code”:2,“message”:“MALFORMED[1]”},中文名的文件没有解压出来

bug描述:

  • plus.zip.decompress解压大文件的时候或者压缩包中有中文文件的时候,会提示{“code”:2,“message”:“MALFORMED[1]”}
信息类别 信息内容
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本 win7
HBuilderX类型 正式
HBuilderX版本 3.1.8
手机系统 Android
手机系统版本 Android 8.0
手机机型 小米或者其他android手机都必现
页面类型 vue
打包方式 云端
项目创建方式 HBuilderX

更多关于uni-app plus.zip.decompress解压有中文名称的大zip文件时报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app plus.zip.decompress解压有中文名称的大zip文件时报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的编码问题。plus.zip.decompress在处理中文文件名时容易出现MALFORMED[1]错误,主要是因为压缩包内的文件名编码与解压时的编码不匹配。

解决方案:

  1. 重新压缩文件:使用支持UTF-8编码的压缩工具(如7-Zip、Bandizip)重新创建压缩包。在压缩时确保选择UTF-8编码格式,特别是包含中文文件名时。

  2. 检查压缩包完整性:确保源压缩包没有损坏,可以通过其他解压工具验证是否能正常解压。

  3. 路径处理:在代码中确保目标路径正确,避免路径中包含特殊字符。建议使用绝对路径进行解压操作。

  4. 文件大小限制:虽然错误信息未直接提示大小问题,但大文件解压时建议分步处理或确保设备存储空间充足。

示例代码调整:

plus.zip.decompress(src, dest, (result) => {
    if(result.code === 0) {
        console.log('解压成功');
    } else {
        console.log('解压失败:' + JSON.stringify(result));
    }
});
回到顶部