使用 JavaScript 库 jszip 可以对传入的本地 zip 包进行解压缩并读取其中的文件。
一段参考代码如下:
const filename = 'example.txt';
async function onDrop(event: DragEvent<HTMLDivElement>) {
const file: File = event.dataTransfer.files[0];
const zip = await jszip.loadAsync(file);
const content = await zip.files[filename].async('text');
console.log('content of example.txt: ', content);
}
这里,loadAsync
函数接受的参数是一个 Blob
,而无论是 input[type=file]
还是通过 drag-n-drop 得到的文件(File
),都是一种特殊的 Blob
,因而可以直接传递给 loadAsync
使用。
.async('text')
可以将结果异步转化成字符串。API 也支持其他的格式类型,比如 ArrayBuffer 等。(文档)
除了读取内容之外,jszip 也支持创建修改 zip 包的内容。完整的 API 文档可以参考这里。