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 }, [