Skip to content

Commit

Permalink
fix: formidable v3 multipart form contents mapped to expected format
Browse files Browse the repository at this point in the history
  • Loading branch information
tomstrong64 committed Apr 23, 2024
1 parent 3ee138d commit b9c7837
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions src/node/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,6 @@ Request.prototype._pipeContinue = function (stream, options) {
res.pipe(stream, options);
res.once('end', () => this.emit('end'));
}

});
return stream;
};
Expand Down Expand Up @@ -1093,7 +1092,7 @@ Request.prototype._end = function () {
parser = exports.parse.image; // It's actually a generic Buffer
buffer = true;
} else if (multipart) {
const form = formidable();
const form = formidable.formidable();
parser = form.parse.bind(form);
buffer = true;
} else if (isBinary(mime)) {
Expand Down Expand Up @@ -1162,6 +1161,31 @@ Request.prototype._end = function () {
}

if (parserHandlesEnd) {
if (multipart) {
// formidable v3 always returns an array with the value in it
// so we need to flatten it
if (object) {
for (const key in object) {
const value = object[key];
if (Array.isArray(value) && value.length === 1) {
object[key] = value[0];
} else {
object[key] = value;
}
}
}

if (files) {
for (const key in files) {
const value = files[key];
if (Array.isArray(value) && value.length === 1) {
files[key] = value[0];
} else {
files[key] = value;
}
}
}
}
this.emit('end');
this.callback(null, this._emitResponse(object, files));
}
Expand Down

0 comments on commit b9c7837

Please sign in to comment.