使用JavaScript(客户端)提取受密码保护的zip文件

5

有许多优秀的库可以在客户端打开 zip 文件,例如:zip.js、jszip 等等……但我找不到任何可以打开加密 zip 文件的库。是否有解决方案可以在客户端(浏览器中)打开 zip 文件呢?


你解决了这个问题吗?如果你能分享一下就太好了。 - Achu
1个回答

3

Zip.js支持加密。可以在演示中尝试它:https://gildas-lormeau.github.io/zip.js/demos/demo-read-file.html. 下面是一个检查ZIP文件密码(以Blob对象形式提供)是否有效的示例:

const verifyZipPassword = async (file, password) => {
    let reader;
    try {
        reader = new zip.ZipReader(new zip.BlobReader(file), { password });
        const entries = await reader.getEntries();
        for (const entry of entries) {
            try {
                await entry.getData(new zip.BlobWriter());
            } catch (error) {
                if (error.message === zip.ERR_ENCRYPTED ||
                    error.message === zip.ERR_INVALID_PASSWORD) {
                    return false;
                } else {
                    throw error;
                }
            }
        }
    } finally {
        await reader.close();
    }
    return true;
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接