解压缩文件不起作用
我使用下面的代码
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); });