解压缩文件不起作用
Unzip file is not working
我正在使用
中的以下代码
https://github.com/cthackers/adm-zip/wiki/ADM-ZIP-Introduction
我需要的是从请求中获取一个 zip 文件(我使用 express 并且我有请求和响应)我需要将它解压缩到某个路径(在我本地驱动器的例子中),我应该把请求放在哪里,我在这里缺少什么才能让它工作
fn: function (req, res) {
var admZip = require('adm-zip');
var zip = new admZip();
zip.addLocalFile("C://TestFolder//TestZip");
在请求正文中我正在获取 zip 文件(我使用邮递员,在正文中我使用二进制文件和 select 一个 zip 文件)
您可以使用 form-data
代替 binary
并使用 multer 来简化问题。您可以通过访问 req.file
获取输入文件,然后您可以执行解压缩操作。
例如,您将添加到您的路线:
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);
});
请试试我的代码片段:
有关一些信息,我的应用程序结构如下所示:
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>
服务器端:
当你使用 postman 或类似的东西 post 时,不要忘记使用 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);
})
输出:
我正在使用
中的以下代码https://github.com/cthackers/adm-zip/wiki/ADM-ZIP-Introduction
我需要的是从请求中获取一个 zip 文件(我使用 express 并且我有请求和响应)我需要将它解压缩到某个路径(在我本地驱动器的例子中),我应该把请求放在哪里,我在这里缺少什么才能让它工作
fn: function (req, res) {
var admZip = require('adm-zip');
var zip = new admZip();
zip.addLocalFile("C://TestFolder//TestZip");
在请求正文中我正在获取 zip 文件(我使用邮递员,在正文中我使用二进制文件和 select 一个 zip 文件)
您可以使用 form-data
代替 binary
并使用 multer 来简化问题。您可以通过访问 req.file
获取输入文件,然后您可以执行解压缩操作。
例如,您将添加到您的路线:
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);
});
请试试我的代码片段:
有关一些信息,我的应用程序结构如下所示:
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>
服务器端:
当你使用 postman 或类似的东西 post 时,不要忘记使用 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);
})