Skip to content

Commit

Permalink
Merge pull request #1800 from tomstrong64/master
Browse files Browse the repository at this point in the history
Update formidable
  • Loading branch information
titanism committed Apr 23, 2024
2 parents 1c8338b + b9c7837 commit 03de30c
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 4 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"debug": "^4.3.4",
"fast-safe-stringify": "^2.1.1",
"form-data": "^4.0.0",
"formidable": "^2.1.2",
"formidable": "^3.5.1",
"methods": "^1.1.2",
"mime": "2.6.0",
"qs": "^6.11.0",
Expand All @@ -38,8 +38,8 @@
"@babel/runtime": "^7.20.13",
"@commitlint/cli": "17",
"@commitlint/config-conventional": "17",
"Base64": "^1.1.0",
"babelify": "^10.0.0",
"Base64": "^1.1.0",
"basic-auth-connect": "^1.0.0",
"body-parser": "^1.20.1",
"browserify": "^17.0.0",
Expand Down
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 03de30c

Please sign in to comment.