将zip文件解压缩到本地文件夹

时间:2015-12-01 07:26:36

标签: javascript node.js express zip unzip

我的节点应用程序有来自客户端的快递和即时发送请求,如邮递员,我需要从 req 获取文件并将其解压缩到我的本地文件夹,我该怎么做?

我找到了以下开源但不确定如何使用 req body 并在我的本地文件夹中提取它,如“C:// Test // extractDest”,

以下代码取自以下开源,但如果是其他良好开源,我可以使用 https://www.npmjs.com/package/decompress-zip

var DecompressZip = require('decompress-zip');
var unzipper = new DecompressZip(filename)

unzipper.on('error', function (err) {
    console.log('Caught an error');
});

unzipper.on('extract', function (log) {
    console.log('Finished extracting');
});

unzipper.on('progress', function (fileIndex, fileCount) {
    console.log('Extracted file ' + (fileIndex + 1) + ' of ' + fileCount);
});

unzipper.extract({
    path: "C://Test//extractDest",
    filter: function (file) {
        return file.type !== "SymbolicLink";
    }
});

这是我发送zip文件的方式,我只需选择二进制并选择 zip 文件

enter image description here

2 个答案:

答案 0 :(得分:9)

我建议您使用与multipart/form-data内容类型兼容的multer

这是一个基本的工作示例。它假设我们只上传一个文件,一个名为“uploads”的文件夹存在于项目的根目录下,一个名为“singleFileUpload”的表单字段用于保存您的数据。您可以更改刈割器documentation之后的所有内容:

var path     = require("path");
var express  = require("express");
var multer   = require("multer");
var Unzipper = require("decompress-zip");


var app = express();

app.use(multer({dest:'./uploads/'}).single('singleFileUpload'));


app.post("/", function(req, res){

    if (req.file){

        var filepath = path.join(req.file.destination, req.file.filename);
        var unzipper = new Unzipper(filepath);

        unzipper.on("extract", function () {
            console.log("Finished extracting");
        });

        unzipper.extract({ path: "C://Test//extractDest"});
    }

    res.status(204).end();
});


app.listen(3000);

使用邮递员,您现在可以使用以下配置上传和解压缩文件:

enter image description here

答案 1 :(得分:5)

你可以使用multer和uzip2来做到这一点。

对于某些信息,我的App结构如下所示:

return reponseNodes.stream().parallel()
        .collect(Collectors.toMap(responseNode -> responseNode.getLabel(), responseNode -> {
            try {
                return processImage(responseNode);
            } catch (Exception e) {
                throw new UncheckedException(e);
            }
        }));

这是我的代码:

//App path --> C:\xampp\htdocs\service

service\
    |
    -- tmp\
    |
    -- app.js
    |
    -- index.html

输出: enter image description here