将zip文件解压到本地文件夹

我有节点应用程序快递和即时消息发送来自客户端的请求,如邮递员,我需要从请求获取文件,并提取它在我的本地文件夹,我怎么能做到这一点?

我发现以下开源,但不知道如何把req正文,并提取它在我的本地文件夹,如“C:// Test // extractDest”,

下面的代码是从以下开源获取的,但如果有其他好的开源的,我可以用它来代替 https://www.npmjs.com/package/decompress-zip

var DecompressZip = require('decompress-zip'); var unzipper = new DecompressZip(filename) unzipper.on('error', function (err) { console.log('Caught an error'); }); unzipper.on('extract', function (log) { console.log('Finished extracting'); }); unzipper.on('progress', function (fileIndex, fileCount) { console.log('Extracted file ' + (fileIndex + 1) + ' of ' + fileCount); }); unzipper.extract({ path: "C://Test//extractDest", filter: function (file) { return file.type !== "SymbolicLink"; } }); 

这是我如何发送zip文件,我只需select二进制文件,然后select一个zip文件

在这里输入图像描述

我build议你使用与multipart/form-data内容types一起工作的multer 。

这是一个基本的工作示例。 它假设我们只上传一个文件,名为“uploads”的文件夹存在于您的项目的根目录下,并且一个名为“singleFileUpload”的表单域保存您的数据。 你可以改变所有那些遵循Muller 文档 :

 var path = require("path"); var express = require("express"); var multer = require("multer"); var Unzipper = require("decompress-zip"); var app = express(); app.use(multer({dest:'./uploads/'}).single('singleFileUpload')); app.post("/", function(req, res){ if (req.file){ var filepath = path.join(req.file.destination, req.file.filename); var unzipper = new Unzipper(filepath); unzipper.on("extract", function () { console.log("Finished extracting"); }); unzipper.extract({ path: "C://Test//extractDest"}); } res.status(204).end(); }); app.listen(3000); 

使用邮递员现在可以使用此configuration上传和解压缩文件:

在这里输入图像描述

你可以使用multer和uzip2来做到这一点。

对于一些信息,我的应用程序结构如下所示:

 //App path --> C:\xampp\htdocs\service service\ | -- tmp\ | -- app.js | -- index.html 

这是我的代码:

 var express = require("express"); var fs = require("fs"); var unzip = require("unzip2"); //module for extracting files var app = express(); var multer = require("multer"); var multer_dest = multer({dest: "./tmp"}).single('zipFile'); app.post("/upload_zip",multer_dest,function(req,res){ console.log(req.file); fs.createReadStream(req.file.path).pipe(unzip.Extract({path: 'C:\\Test\\extractDest'})); result = { file:req.file, message:"File has been extracted" }; fs.unlink(req.file.path, function (e) { if (e) throw e; console.log('successfully deleted '+req.file.path); }); res.end(JSON.stringify(result)); }); var server = app.listen(8081,function(){ var host = server.address().address; var port = server.address().port; console.log("Example App Listening at http://%s:%s",host,port); }) 

输出: 在这里输入图像描述

Interesting Posts