如何从节点中的客户端提取zip

我有一个节点的应用程序,需要从客户端邮递员得到一些zip文件,并将其解压到我的文件系统中的一个文件夹,我使用快递我做了下面的工作,

我在这里错过了什么?

我已经创build了示例节点应用程序来模拟问题。

var express = require('express'); var upload = require('multer')({ dest: 'uploads/' }); var admZip = require('adm-zip'); var app = express(); app.post('/',upload.single('file'),function(req,res){ debugger; var zip = new admZip(req.file); zip.extractAllTo("C://TestFolder//TestPathtoExtract", true); res.send("unzip"); }); var server = app.listen(3001,function(){ var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s',host,port); }) 

这是我使用它即时邮递员

在这里输入图像说明

如果还有其他方式可以用不同的开源代码来实现,那就太棒了! 我使用https://github.com/cthackers/adm-zip

这可以更改为任何其他库

我也find这个库,但不知道如何使用它快速 https://www.npmjs.com/package/decompress-zip

谢谢!

这是我为Postman做的设置,首先这是我的form-data

形成

现在在试图手动设置multipart/form-data并完全失败的头文件中,我留下了空白,所以在这里没有标题。

头

在这里,我做了一对console.logreq.headers之一,以确保Postman发送正确的multipart/form-datareq.file另一个

文件

而且输出似乎是好的

在这里输入图像说明

编辑:代码。

 var express = require('express'); var upload = require('multer')({ dest: 'uploads/' }); var admZip = require('adm-zip'); var app = express(); app.post('/', upload.single('file'), function(req, res) { console.log('%c > req.headers test.js [9] <=================================', 'color:blue;', req.headers); debugger; console.log('%c > req.file test.js [10] <=================================', 'color:blue;', req.file); //instead of just req.file I use req.file.path as admzip needs the actual file path var zip = new admZip(req.file.path); zip.extractAllTo("/Users/myuser/Desktop/ext", true); res.send("unzip"); }); var server = app.listen(3001, function() { var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); }); 

您需要传递文件名作为参数。

使用req.file.path

  var zip = new admZip(req.file.path);