MultipartParser.end():流意外结束

时间:2016-12-14 08:59:24

标签: express multipartform-data react-redux

我正在尝试制作一个带有图片上传选项的表单。我正在使用express-http-proxy作为我的API代理,并按照建议使用multer

app.use('/api', upload.any(), proxy('http://localhost:3333'));

提交表单时出现此错误:

  

错误:MultipartParser.end():流意外结束:state = START_BOUNDARY       在MultipartParser.end(/home/gabriel/Sites/city-amazing/api/node_modules/formidable/lib/multipart_parser.js:326:12)       在IncomingMessage。 (/home/gabriel/Sites/city-amazing/api/node_modules/formidable/lib/incoming_form.js:130:30)       在emitNone(events.js:86:13)       在IncomingMessage.emit(events.js:185:7)       at endReadableNT(_stream_readable.js:975:12)       at _combinedTickCallback(internal / process / next_tick.js:74:11)       at process._tickCallback(internal / process / next_tick.js:98:9)

如何使用express处理任何文件上传?

4 个答案:

答案 0 :(得分:1)

当我尝试从表单(multipart-form-data)解析图像文件时出现此错误。我用于解析的库称为"formidable"。所以,我看到同样的库也在这里引起错误。

我收到此错误的原因是因为我以这种方式request.setEncoding("utf8");设置了请求对象的编码类型。然后我以这种方式将请求对象传递给了可怕的解析方法new formidable.IncomingForm().parse(request, callback);,这就是导致我出错的原因。

我只是删除了request.setEncoding("utf8");行,它开始起作用。

答案 1 :(得分:0)

我遇到了同样的问题,并通过设置parseReqBody: false

进行了修复
app.use('/post', proxy('httpbin.org', {
  parseReqBody: false
}));

答案 2 :(得分:0)

如果您使用的是邮递员,请取消选中content-type

答案 3 :(得分:0)

我在接受图像时在我的节点 + express 后端遇到了同样的错误。

  1. 我遇到的第一个错误是 weak header, multipart/form-data without boundary
  2. 然后在给它边界之后,我遇到了同样的错误 MultipartParser.end(): stream ended unexpectedly

我花了将近 5 个小时调试这些错误,发现在发送数据时没有提供内容类型标头。您可以使用其他标头,但不要在将 formData 发送到后端时使用 content-type: multipart/form-data

P.S:这在我的 MERN 项目中对我有用。它也应该与其他后端一起使用。