我正在尝试制作一个带有图片上传选项的表单。我正在使用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
处理任何文件上传?
答案 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 后端遇到了同样的错误。
weak header, multipart/form-data without boundary
。MultipartParser.end(): stream ended unexpectedly
我花了将近 5 个小时调试这些错误,发现在发送数据时没有提供内容类型标头。您可以使用其他标头,但不要在将 formData 发送到后端时使用 content-type: multipart/form-data
。
P.S:这在我的 MERN 项目中对我有用。它也应该与其他后端一起使用。