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

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

hxing6411年前 (2023-10-12)nodejs3318

一开始我是使用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是要输出的目录

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

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

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

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

分享给朋友:

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

mongodb数据备份和读取

下载mongodb数据工具,https://www.mongodb.com/try/download/database-tools,解压到目录中用命令行进入此目录,使用mongodump命令生成备份文件,例如备份本地test数据库到d:\db目录, 在db目录会生成一个test文件夹: mongod...

Nodejs 定时任务(node-schedule)

安装:npm install node-schedule Cron风格定时器var schedule = require('node-schedule'); function scheduleCronstyl...

nodejs websocket 发送protoBuf数据到服务端

当使用Node.js进行WebSocket通信时,发送经过Protobuf编码的数据到服务端是一个常见的需求。在这篇博客中,我们将通过一个示例来演示如何实现这个功能。假设我们有一个WebSocket服务端,地址为ws://example.com/ws我要发送pb_http_frame中的Reques...

构建Node.js Web 应用:使用Express、EJS 和 Mongoose

在本篇博客文章中,我们将介绍如何使用Node.js的Express框架、EJS模板引擎和Mongoose库来构建一个简单的Web应用实例。通过代码示例和详细解释,帮助读者了解如何结合这些工具来构建一个完整的Node.js Web 应用。1. 准备工作首先,确保你已经安装了Node.js和npm(No...

深入理解 Node.js 开发中的 Express 路由与中间件

在 Node.js 开发中,Express 是一个非常流行的框架,它提供了一种简洁而灵活的方式来构建 Web 应用程序。在 Express 中,路由和中间件是两个核心概念,它们在开发过程中起着重要的作用。本文将深入探讨 Express 路由和中间件的概念、使用方法以及...

发表评论

访客

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