错误:运行帖子时不正确的标题检查

Posted

技术标签:

【中文标题】错误:运行帖子时不正确的标题检查【英文标题】:Error: incorrect header check when running post 【发布时间】:2015-10-04 23:49:28 【问题描述】:

我需要从 rest 调用中获取 zip(对于模拟,我使用带有二进制选项的 postman 进行 post 并添加一个带有文件夹和 html 文件的小 zip 文件),在模拟期间我想用 express 获取数据并提取 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

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

【问题讨论】:

我不认为邮递员可以处理这个。您是否尝试过以某种方式发送 curl 请求? 【参考方案1】:

zlib 用于提取压缩或压缩的数据,而不是 .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 无法处理这样的上传(如 cmets 中所建议的那样),您可以使用 cURL 进行测试:

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

【讨论】:

非常感谢它的工作 投票赞成!只有一件事,当我运行它时,大约需要 10 秒才能得到响应(提取后文件大小为 3.5 MB)我可以以某种方式加快这个过程吗? @shopiaT 可能有提供更快解压缩的模块,但恐怕我无法为您提供任何名称(我自己没有其他模块的经验)。所示代码尽可能简单,我认为速度提升空间不大。 非常感谢,这就足够了!顺便说一句,如果我按诺言扭曲它,你认为它更好吗,我在谈论 unzip.extract 函数......你觉得呢? @shopiaT 没关系,性能方面。另外,unzip.Extract() 是一个流函数,可能很难转换为 Promise。

以上是关于错误:运行帖子时不正确的标题检查的主要内容,如果未能解决你的问题,请参考以下文章

如何正确处理 AVPlayer HTTP 错误?

异常处理

Flutter 错误 - 断言失败:第 213 行 pos 15:'data != null':在从 firestore 获取数据时不正确

我的错误 #1010 情况

VSCode:纱线,但出现错误:数据检查不正确

Dart 错误:错误:当前 Dart 运行时不支持导入 dart:mirrors