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

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

hxing6411年前 (2023-10-12)nodejs3573

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

具体实现步骤:

  1. 安装

    npm install yauzl

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

JavaScript
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. 调用

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

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

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

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

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

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

nodejs保存文件,不存在则自动创建目录

            const absolutePath = path.resolve(outputPath);   &nb...

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

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

深入理解Node.js进程管理

在Node.js中,进程管理是一个非常重要的话题,它涉及到如何创建、控制和监测进程,以及如何利用多核处理器。本文将深入探讨Node.js中的进程管理,并通过详细的代码示例帮助读者更好地理解。 1. 什么是进程? 首先,让我们了解一下...

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.从报错信息就可以知道是因为你之前设置的淘宝镜像已过期,解决方法...

发表评论

访客

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