expressjs / expressjs/multer

MulterError: File too large when file size IS BELOW `fileSize`

Open
#1,106 0 comments 1 reaction 0 assignees View on GitHub
investigate
Dominant language
JavaScript
Stars
12.1k
Forks
1.1k
Avg merge
8d 2h
Merged PRs (30d)
21

Description

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:
```json
"multer": "^1.4.5-lts.1",
```

My Multer setup code:
```typescript
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:
![image](https://user-images.githubusercontent.com/38140593/173406071-19bcd479-7e85-45bb-9713-ccaf0caf248b.png)

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. (/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:
![868607](https://user-images.githubusercontent.com/38140593/173406614-1fcd16a8-5b29-4921-9076-499e6386b423.jpeg)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.