jszip生成HarmonyOS 鸿蒙Next加密的压缩文件

发布于 1周前 作者 gougou168 来自 鸿蒙OS

jszip生成HarmonyOS 鸿蒙Next加密的压缩文件

我在@ohos/jszip的示例代码中只看到了const jszip = new JSZip();
jszip.generateAsync({
type: “arraybuffer”,
password: “123456789”
})这部分代码,那完整的将对应目录文件进行压缩的流程是什么?我并没有看到传入文件路径

2 回复

可以先往jszip 对象中添加文件,jszip .file。看下文档的这个用法:https://gitee.com/openharmony-tpc/openharmony_tpc_samples/tree/master/ohos-jszip。 然后进行压缩。

示例代码如下:

generateZIP() {
  let ctx = this;
  this.openLoading();
  this.instance.generateAsync({ type: "arraybuffer", password: this.password, encryptStrength: 3 }).then(res => {
    ctx.filePath = writeCacheDirFile(`prod-${Date.now()}.zip`, res);
    this.closeLoading();
  })
    .catch((err: object) => {
      this.closeLoading();
      promptAction.showToast({ message: `生成压缩文件失败!` });

      log(`生成压缩文件失败 ${err}`)
    })
}


import fs from '@ohos.file.fs';
import promptAction from '@ohos.promptAction';

let context = getContext();

export function writeCacheDirFile(fileName: string, fileData: string | ArrayBuffer): string {
  const path = `${context.cacheDir}/${fileName}`;
  const openInfo = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
  fs.writeSync(openInfo.fd, fileData);
  promptAction.showToast({ message: "保存文件成功,请在设备管理器中查看!" });
  console.log("保存文件成功,请在设备管理器中查看! " + path)
  return path
}

要确保generateAsync压缩回调有写入文件操作

更多关于jszip生成HarmonyOS 鸿蒙Next加密的压缩文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中生成加密的压缩文件,可以使用JSZip库结合CryptoJS或其他加密库来实现。以下是基本步骤,不涉及具体代码实现:

  1. 引入库:首先,确保在项目中引入了JSZip和CryptoJS库。这些库可以通过npm安装或者通过CDN方式引入。

  2. 创建JSZip实例:使用JSZip创建一个新的压缩包实例。

  3. 添加文件:通过实例的file方法向压缩包中添加文件。

  4. 生成加密内容:在添加文件前或使用CryptoJS对文件进行加密处理,确保加密后的内容作为文件内容添加到压缩包中。

  5. 生成压缩文件:使用JSZip实例的generateAsync方法生成压缩文件,并选择适当的格式(如二进制格式或Base64格式)。

  6. 保存或传输:将生成的加密压缩文件保存到本地或者通过网络传输。

示例流程(伪代码):

const JSZip = require('jszip');
const CryptoJS = require('crypto-js');

let zip = new JSZip();
let encryptedContent = CryptoJS.AES.encrypt('your content', 'your secret key').toString();
zip.file('example.txt', encryptedContent);
zip.generateAsync({type:'blob'}).then(function(content) {
    // 保存或处理生成的压缩文件
});

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部