如何从节点中的客户端提取zip
How to extract zip from client in node
我有一个节点应用程序需要从客户端 Postman 获取一些 zip 文件并将其解压缩到我的文件系统中的一个文件夹,我正在使用 express 我做了以下但不起作用,
我在这里错过了什么?
我创建了示例节点应用程序来模拟该问题。
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
可以更改为任何其他库
我也找到了这个库,但不确定如何将它与 express 一起使用
https://www.npmjs.com/package/decompress-zip
谢谢!
您需要将文件名作为参数传递。
使用req.file.path
var zip = new admZip(req.file.path);
这是我为 Postman
所做的设置,首先这是我的 form-data
body
现在在 header 中,我在尝试手动设置 multipart/form-data
并完全失败后留空了,所以这里没有 header。
这里我做了一对console.log
,其中一个req.headers
确保Postman
发送正确multipart/form-data
,另一个req.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);
});
我有一个节点应用程序需要从客户端 Postman 获取一些 zip 文件并将其解压缩到我的文件系统中的一个文件夹,我正在使用 express 我做了以下但不起作用,
我在这里错过了什么?
我创建了示例节点应用程序来模拟该问题。
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
可以更改为任何其他库
我也找到了这个库,但不确定如何将它与 express 一起使用 https://www.npmjs.com/package/decompress-zip
谢谢!
您需要将文件名作为参数传递。
使用req.file.path
var zip = new admZip(req.file.path);
这是我为 Postman
所做的设置,首先这是我的 form-data
body
现在在 header 中,我在尝试手动设置 multipart/form-data
并完全失败后留空了,所以这里没有 header。
这里我做了一对console.log
,其中一个req.headers
确保Postman
发送正确multipart/form-data
,另一个req.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);
});