Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MultipartParser.end(): stream ended unexpectedly

I'm trying to make a form with option for image upload. I'm using express-http-proxy as my API proxy and multer as suggested.

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

Issue is this error when submitting the form:

Error: MultipartParser.end(): stream ended unexpectedly: state = START_BOUNDARY at MultipartParser.end (/home/gabriel/Sites/city-amazing/api/node_modules/formidable/lib/multipart_parser.js:326:12) at IncomingMessage. (/home/gabriel/Sites/city-amazing/api/node_modules/formidable/lib/incoming_form.js:130:30) at emitNone (events.js:86:13) at 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)

How to handle any file upload using express?

like image 991
fermoga Avatar asked Dec 14 '16 08:12

fermoga


2 Answers

I got this error when I was trying to parse an image file from a form (multipart-form-data). The library I used for parsing is called "formidable". So, i see that the same library is causing the error here as well.

The reason I got this error was because i set the encoding type for my request object this way request.setEncoding("utf8");. And then I was passing the request object to the parse method of formidable this way, new formidable.IncomingForm().parse(request, callback); This is what caused the error for me.

I simply removed the line request.setEncoding("utf8"); and it started working.

like image 148
Yashas Avatar answered Nov 03 '22 08:11

Yashas


I had the same error at my node + express backend while accepting image.

  1. First error I had was weak header, multipart/form-data without boundary.
  2. Then after giving boundary to it, I faced this same error MultipartParser.end(): stream ended unexpectedly

I spent almost 5 hours debugging these errors and found out that don't give content-type header while sending your data. You may use other headers but don't use content-type: multipart/form-data while send formData to backend.

P.S: This worked for me in my MERN project. It should work with other backend too.

like image 3
Dhiraj Narsinghani Avatar answered Nov 03 '22 08:11

Dhiraj Narsinghani