Express Multipart(Body Parser) - {[错误:未知传输编码]状态:400}

时间:2014-09-21 13:32:58

标签: javascript node.js http express http-headers

我从快速3模块multipart获取错误{ [Error: unknown transfer-encoding] status: 400 }。听起来应该发送TE标题 - 它不是。但是,我已经读过这个标头与正在发送的content-length标头不兼容。

以下标题已发送:

{
    connection: 'keep-alive',
    'content-type': 'multipart/form-data; boundary=--------092114122750368',
    'content-length': '6983',
    host: '******* ',
    accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'accept-encoding': 'identity',
    'user-agent': 'Mozilla/3.0 (compatible; Indy Library)'
}

关于可能导致此问题的任何想法?

EDIT1

服务器代码如下:

var port = 80,
    express = require('express'),
    app;

app = express();

// support JSON, urlencoded, and multipart requests
app.use(express.json({
    limit: '50mb'
}));

app.use(express.urlencoded({
    limit: '50mb'
}));

app.use(express.multipart({
    uploadDir:'./uploads',
    limit: '50mb'
}));

app.use(function (err, req, res, next) {
    console.log(req.headers);
    console.log(err);
});

显然有更多代码,但这是错误实际发生的地方。 req.header的输出是我上面提供的JSON,{ [Error: unknown transfer-encoding] status: 400 }的输出位于本文的第一行。我最初在每个app.use电话后添加了错误回调,但我发现导致此问题的是express.multipart

1 个答案:

答案 0 :(得分:0)

我们必须添加transfer-encoding: chunked,因为这是数据的发送方式。我们使用的HTTP库添加了content-length属性,该属性与transfer-encoding属性不兼容,但它不会导致服务器出现问题,所以这就是我们解决的问题。