解压缩文件不起作用

我使用下面的代码

https://github.com/cthackers/adm-zip/wiki/ADM-ZIP-Introduction

Whant我需要的是从请求获取一个zip文件(即时通讯使用快递 ,我已经请求和响应),我需要提取(解压缩)到一些path(在本地驱动器的示例中),我应该在哪里放置请求和我在这里失踪,使其工作

fn: function (req, res) { var admZip = require('adm-zip'); var zip = new admZip(); zip.addLocalFile("C://TestFolder//TestZip"); 

在请求正文即时获取压缩文件(即时通讯使用邮递员和身体我使用二进制,并select一个zip文件)

请尝试我的代码片段:

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

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

客户端:

 <html> <body> <h3>ZIP Upload:</h3> <form action="/upload_zip" method="POST" enctype="multipart/form-data"> Select zip to upload: <input type="file" name="zipFile" id="zipFile"> <input type="submit" value="Upload ZIP" name="submit"> </form> </body> </html> 

服务器端:

不要忘记使用邮递员或类似的东西时使用enctype="multipart/form-data"

 var express = require("express"); var fs = require("fs"); var AdmZip = require('adm-zip'); var app = express(); var multer = require("multer"); var multer_dest = multer({dest: "./tmp"}).single('zipFile'); app.get("/",function(req,res){ console.log("Show index.html"); res.sendFile(__dirname+"/"+"index.html"); }); app.post("/upload_zip",multer_dest,function(req,res){ console.log(req.file); var zip = new AdmZip(req.file.path); zip.extractAllTo("./tmp"); 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); }) 

输出:

在这里输入图像描述

您可以通过使用form-data而不是binary并使用multer来简化问题。 您可以通过访问req.file来获取input文件,之后您可以执行解压缩操作。

例如,您将添加到您的路线:

 var upload = require('multer')({ dest: 'uploads/' }); var admZip = require('adm-zip'); app.post('/upload-here', upload.single('file'), function (req, res, next) { var zip = new admZip(req.file.path); zip.extractAllTo("C://TestFolder//TestZip", true); });