From a9a5d0c49477be338736b5ca5f681cad8d82a9ab Mon Sep 17 00:00:00 2001 From: Raashish Aggarwal <94279692+raashish1601@users.noreply.github.com> Date: Sat, 30 May 2026 15:11:33 +0530 Subject: [PATCH] fix: allow files at exact fileSize limit --- lib/make-middleware.js | 16 +++++++++++++++- test/error-handling.js | 12 ++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/make-middleware.js b/lib/make-middleware.js index ee509886..a7b1a719 100644 --- a/lib/make-middleware.js +++ b/lib/make-middleware.js @@ -20,6 +20,20 @@ function makeMiddleware (setup) { var options = setup() var limits = options.limits + var busboyLimits = limits + + if (limits && Object.prototype.hasOwnProperty.call(limits, 'fileSize')) { + busboyLimits = {} + var key + for (key in limits) { + busboyLimits[key] = limits[key] + } + + if (typeof limits.fileSize === 'number' && isFinite(limits.fileSize)) { + busboyLimits.fileSize = limits.fileSize + 1 + } + } + var storage = options.storage var fileFilter = options.fileFilter var fileStrategy = options.fileStrategy @@ -126,7 +140,7 @@ function makeMiddleware (setup) { try { busboy = Busboy({ headers: req.headers, - limits: limits, + limits: busboyLimits, preservePath: preservePath, defParamCharset: defParamCharset }) diff --git a/test/error-handling.js b/test/error-handling.js index 597e8039..912b83d6 100644 --- a/test/error-handling.js +++ b/test/error-handling.js @@ -66,6 +66,18 @@ describe('Error Handling', function () { }) }) + it('should allow file that is exactly at file size limit', function (done) { + var form = new FormData() + var parser = multer({ storage: multer.memoryStorage(), limits: { fileSize: 1500 } }).single('small0') + + form.append('small0', Buffer.alloc(1500), 'small0.txt') + + util.submitForm(parser, form, function (err) { + assert.ifError(err) + done() + }) + }) + it('should respect file count limit', function (done) { var form = new FormData() var parser = withLimits({ files: 1 }, [