返回
如何在 JavaScript 中压缩和解压缩文件
前端
2023-12-21 14:57:25
浏览器端
// 安装 JSZIP 库
import JSZip from "jszip";
// 创建一个新的 JSZIP 实例
const zip = new JSZip();
// 添加文件到压缩包
zip.file("hello.txt", "Hello, world!");
// 保存压缩包
zip.generateAsync({type: "blob"}).then(function(content) {
// 保存文件
saveAs(content, "my_archive.zip");
});
Node.js
// 安装 JSZIP 库
const JSZip = require("jszip");
// 创建一个新的 JSZIP 实例
const zip = new JSZip();
// 添加文件到压缩包
zip.file("hello.txt", "Hello, world!");
// 保存压缩包
zip.generateNodeStream().pipe(fs.createWriteStream("my_archive.zip"));
解压缩文件
// 加载压缩包
zip.loadAsync(content).then(function(zip) {
// 提取文件
zip.file("hello.txt").async("string").then(function(content) {
// 使用文件内容
console.log(content);
});
});
解码文件
// 根据文件类型解码文件
switch (file.name.split(".").pop()) {
case "txt":
// 文本文件
file.async("string").then(function(content) {
// 使用文件内容
console.log(content);
});
break;
case "png":
// 图像文件
file.async("uint8array").then(function(content) {
// 使用文件内容
const img = document.createElement("img");
img.src = URL.createObjectURL(new Blob([content]));
document.body.appendChild(img);
});
break;
case "json":
// JSON 文件
file.async("json").then(function(content) {
// 使用文件内容
console.log(content);
});
break;
}
结论
JSZIP 是一个强大的 JavaScript 库,用于压缩和解压缩文件。它支持各种文件格式,并且可以在浏览器端和 Node.js 中使用。希望本教程对您有所帮助。