multer
multer copied to clipboard
MulterError: File too large when file size IS BELOW `fileSize`
I am having an issue where Multer is throwing a LIMIT_FILE_SIZE
error code, when the uploaded file's size is below the given limits.fileSize
bytes size.
Multer version:
"multer": "^1.4.5-lts.1",
My Multer setup code:
export const acceptFileUpload = (
req: Express.Request,
res: Express.Response,
next: Express.NextFunction
) => {
const maxFileSize = 10 * 1024 * 1024 // 10 MB
const tempStorage = multer.diskStorage({
destination: '/tmp',
filename: (_, file, cb) => {
const fileParts = file.originalname.split('.')
const extension = fileParts[fileParts.length - 1]
cb(null, newFileName(extension))
}
})
const handleFile = multer({
storage: tempStorage,
limits: {
fileSize: maxFileSize,
files: 1,
fields: 1
},
fileFilter: (_, file, cb) => {
console.log(util.inspect(file, false, null, true))
if (!allowedMimes.includes(file.mimetype)) {
const fileNameParts = file.originalname.split('.')
const extension = fileNameParts[fileNameParts.length - 1]
return cb(new APIError({
message: `The file type ${extension.toUpperCase()} is not accepted.`,
statusCode: 400
}))
}
return cb(null, true)
}
}).single('file')
handleFile(req, res, (err: any) => {
if (err) {
if (err?.code === 'LIMIT_FILE_SIZE') {
console.log('err: ', err)
return errorHandler({
message: `File is too big. File uploads must be smaller than ${maxFileSize / 1024 / 1024} MB.`,
statusCode: 400
}, res)
}
errorHandler(err, res)
} else {
next()
}
})
}
When I upload this file:
I get this error and my server side logs the following
{
fieldname: 'file',
originalname: '868607.jpeg',
encoding: '7bit',
mimetype: 'image/png'
}
err: MulterError: File too large
at abortWithCode (/Users/zact/Projects/app/application/server/node_modules/multer/lib/make-middleware.js:71:22)
at FileStream.<anonymous> (/Users/zact/Projects/app/application/server/node_modules/multer/lib/make-middleware.js:134:11)
at FileStream.emit (node:events:527:28)
at FileStream.emit (node:domain:475:12)
at SBMH.ssCb [as _cb] (/Users/zact/Projects/app/application/server/node_modules/busboy/lib/types/multipart.js:479:32)
at feed (/Users/zact/Projects/app/application/server/node_modules/streamsearch/lib/sbmh.js:248:10)
at SBMH.push (/Users/zact/Projects/app/application/server/node_modules/streamsearch/lib/sbmh.js:104:16)
at Multipart._write (/Users/zact/Projects/app/application/server/node_modules/busboy/lib/types/multipart.js:567:19)
at writeOrBuffer (node:internal/streams/writable:390:12)
at _write (node:internal/streams/writable:331:10)
at Multipart.Writable.write (node:internal/streams/writable:335:10)
at IncomingMessage.ondata (node:internal/streams/readable:766:22)
at IncomingMessage.emit (node:events:527:28)
at IncomingMessage.emit (node:domain:475:12)
at IncomingMessage.Readable.read (node:internal/streams/readable:539:10)
at flow (node:internal/streams/readable:1023:34) {
code: 'LIMIT_FILE_SIZE',
field: 'file',
storageErrors: []
}
6/13/2022 12:50:49 PM {
message: 'File is too big. File uploads must be smaller than 10 MB.',
statusCode: 400
}
source file I am uploading: