错误:运行post时检查标头错误

时间:2015-07-15 18:59:57

标签: javascript node.js express zlib fs

我需要从休息电话获取拉链(对于模拟我使用带二进制选项的postman发布并添加一个带文件夹和html文件的小zip文件),在模拟期间我想用快递获取数据并解压缩并在C盘下放入一些文件夹。 目前当我运行以下程序时(这是我尝试过的所有代码)但是我得到了错误

  

events.js:85         扔掉//未处理的'错误'事件               ^错误:不正确的标题检查       在Zlib._handle.onerror(zlib.js:366:17)

var express = require('express'),
    fs = require('fs'),
    zlib = require('zlib'),
    app = express();

app.post('/', function (req, res) {
    var writeStream = fs.createWriteStream('C://myFolder', {flags: 'w'});
    req.pipe(zlib.createInflate()).pipe(writeStream);

});

var server = app.listen(3000, function () {
        console.log("Running on port" + 3000)
    }
)
邮递员标题中的

我添加了以下内容

content-Type ----> application/zip

我应该如何克服这个问题并保存拉链? 还有其他推荐的(zlib)库来提取和保存zip?

1 个答案:

答案 0 :(得分:2)

zlib旨在提取gzip压缩或泄露数据,而不是.ZIP文件。

您可以使用node-unzip模块:

var unzip = require('unzip');
...
app.post('/', function(req, res) {
  var extractor = unzip.Extract({ path : 'C://myFolder' }).on('close', function() {
    res.sendStatus(200);
  }).on('error', function(err) {
    res.sendStatus(500);
  });
  req.pipe(extractor);
});

如果Postman无法处理这样的上传(如评论中所示),您可以使用cURL进行测试:

$ curl -XPOST localhost:3000 --data-binary @test.zip