当前位置:首页 > javascript > nodejs > 正文内容

nodejs 解压文件,当文件名为中文名时会出现乱码

hxing6411年前 (2023-10-12)nodejs3436

一开始我是使用compressing 去解压的,后面一直出现乱码,于是换了个解压的包 yauzl 

具体实现步骤:

  1. 安装

    npm install yauzl

   2. 封装了个解压文件方法

function unzip(zipFileName, outputDir){
        const yauzl = require('yauzl')
    return new Promise((resolve, reject) => {
        if (!fs.existsSync(outputDir)) {
            fs.mkdirSync(outputDir, { recursive: true });
        }
        
        yauzl.open(zipFileName, {lazyEntries: true}, function(err, zipfile) {
            if (err) reject(err);
            else {
                zipfile.readEntry();
                zipfile.on("entry", function(entry) {
                    if (/\/$/.test(entry.fileName)) {
                        var dir = path.join(outputDir, entry.fileName);
                        if (!fs.existsSync(dir)) {
                            fs.mkdirSync(dir, { recursive: true });
                        }
                        zipfile.readEntry();
                    } else {
                        zipfile.openReadStream(entry, function(err, readStream) {
                            if (err) reject(err);
                            else {
                                var fileName = path.join(outputDir, entry.fileName);
                                readStream.pipe(fs.createWriteStream(fileName));
                                readStream.on("end", function() {
                                    zipfile.readEntry();
                                });
                            }
                        });
                   }
               }).on("close",function(){
                 resolve("解压完成");
               });
            }
        });
    });
}

  3. 调用

 unzip(zipPath, outputPath).then(msg => console.log(msg)).catch(err => console.error(err));  // zipPath 是要解压的文件路径   outputPath是要输出的目录

     使用以上方法即可解决乱码问题

扫描二维码推送至手机访问。

版权声明:本文由星星博客发布,如需转载请注明出处。

本文链接:https://xingxinghan.cn/?id=422

分享给朋友:

“nodejs 解压文件,当文件名为中文名时会出现乱码” 的相关文章

Node.js初阶之Express

Node.js是一种基于事件驱动和非阻塞I/O模型的JavaScript运行环境,它非常适合构建高性能的网络应用程序。在Node.js生态系统中,Express是最受欢迎的Web应用程序框架之一。本文将介绍Node.js初阶中的Express框架,并提供一些实例来帮助你入门。什么是ExpressEx...

Node.js中的并发编程:利用事件循环实现高效多任务处理

在Node.js中,利用事件驱动的非阻塞I/O模型,我们可以轻松地实现并发编程,高效地处理多个任务。本文将介绍Node.js中的并发编程概念、常用的实现方式以及相关代码示例,并总结如何通过事件循环来实现高效的多任务处理。 一、并发编程概念...

nodejs 文件操作类的封装

最近做node项目,操作文件特别不方便,于是封装了工具类挺好用的,分享给大家 const fs = require('fs') const path = require('path') /** &nb...

npm安装时报错,出现 certificate has expired

最近使用npm安装工具屡屡报错,大致显示为:npm ERR! request to https://registry.npm.taobao.org/cnpm failed, reason: certificate has expired.从报错信息就可以知道是因为你之前设置的淘宝镜像已过期,解决方法...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。