From 8b4aa069203d9f9b0613235a2f6b36e696ccbcea Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 1 Oct 2026 15:00:48 +0000
Subject: [PATCH] build(deps): bump multer from 2.2.0 to 2.4.0 (#14493)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [multer](https://github.com/expressjs/multer) from 2.2.0 to 2.4.0.
Sourced from multer's
releases. multer finally supports Google Cloud Functions and Firebase
🎉 These platforms read the request body before your code runs, so
multer's classic The new const upload = multer({ app.post('/upload', upload.single('file'), (req, res) => {Release notes
v2.4.0
Highlights
req.pipe(busboy) received nothing: empty
req.body, empty req.files, and nearly a decade
of duplicated issues.streamHandler option closes that gap: you decide
how the body reaches the parser, so the pre-read rawBody
just works (see image).const multer = require('multer')
storage: multer.memoryStorage(),
streamHandler: (req, busboy) => {
// Cloud Functions / Firebase expose the pre-read body here
if (req.rawBody) busboy.end(req.rawBody)
else req.pipe(busboy)
}
})
res.json({ name: req.file.originalname, size: req.file.size })
})
This landed thanks to community PRs going back to 2017; their authors are credited as co-authors in the release.
@​UlisesGascon
in expressjs/multer#1463@​kilisamemarisaaa
in expressjs/multer#1464@​flashbag in expressjs/multer#426@​UjjwalKumar239
in expressjs/multer#1416@​Phillip9587 in
expressjs/multer#1356@​abhu85 in expressjs/multer#1395@​deepakganesh78
in expressjs/multer#1446@​Sagargupta16
in expressjs/multer#1426@​ShubhamOulkar
in expressjs/multer#1335@​kilisamemarisaaa
in expressjs/multer#1460@​hossein-zare
in expressjs/multer#1133@​kilisamemarisaaa
in expressjs/multer#1458@​UlisesGascon
in expressjs/multer#1465@​UlisesGascon
in expressjs/multer#1468... (truncated)
Sourced from multer's changelog.
2.4.0
- Fix CVE-2026-88932 (GHSA-3pph-fpjx-jg34)
- Add
filenametoLIMIT_FILE_SIZEandLIMIT_UNEXPECTED_FILEerrors (#1416)- Accept a function for
limits, called with the request, to set limits per request (#1133)- Add opt-in
flushoption toDiskStorageto fsync files before the callback runs (#1458)- Expose busboy's
defCharset,highWaterMarkandfileHwmoptions (#1465)- Add
streamHandleroption to feed busboy from pre-consumed bodies (Google Cloud Functions, Firebase) (#1466)- Allow
multer.diskStorage()to be called without options (#1471)- Decode WHATWG-escaped characters (
%0A,%0D,%22) in field names, matchingfile.originalnamesince 2.3.0:req.bodykeys,file.fieldnameanderr.fieldnow carry the real name. If you matched the escaped spelling as a workaround, use the real name now (#1473)- Report the decoded filename in
err.filenameonLIMIT_FILE_SIZEerrors, matchingfile.originalname(#1478)- Reject non-integer or negative
limitsvalues at construction time; a float limit silently disabled the check (#1395, #1335)- Accept requests with exactly
limits.partsparts;LIMIT_PART_COUNTnow fires only when the limit is exceeded. If you setpartsone higher to work around this, you can drop the extra one (#1446)- Files skipped by
fileFilterno longer count towardsmaxCount(#1426)- Change the
LIMIT_UNEXPECTED_FILEmessage to "Unexpected file field" (#426)- Remove the
concat-streamdependency (#1356)- Docs: add JSDoc to the public API and document the storage engine stream contract (#1467, #1468)
- Docs: add FormData upload examples (#896)
- Docs: remove the translated READMEs (#1463)
- Internal: run the test suite on macOS (#1464)
2.3.0
- Fix CVE-2026-77078 (GHSA-wc9g-mqfw-jrwm)
- Fix CVE-2026-77037 (GHSA-qfvm-cv95-jqjf)
- Fix CVE-2026-77063 (GHSA-qvfw-j98x-7q72)
- Fix CVE-2026-82333 (GHSA-535w-7cp7-47q4)
- Add
MulterErrorcodesINVALID_FIELD_NAMEandSTREAM_DESTROYED- Add opt-in
limits.fieldArrayIndexLimitto bound numeric array indexes in field names (#1438)- Accept files whose size is exactly
limits.fileSize(#1407)- Preserve the caller's async context (
AsyncLocalStorage) when callingnext()(#1124)- Decode WHATWG-escaped characters (
%0A,%0D,%22) infile.originalname(#1421)- Do not crash when
fileFilterinvokes its callback more than once (#1427)- Use a fallback message for
MulterErrorcodes without a mapping (#1448)- Docs: clarify
preservePathandparts, usecrypto.randomBytesin theDiskStorageexample (#1414, #1430, #1436)- Docs: add Indonesian, Japanese and Tamil translations and refresh all translations from the current README (#1431, #1354, #1462)
- Internal: run the test suite on Windows (#1334)
35979e5
2.4.0 (#1469)b888532
chore(deps): bump github/codeql-action/upload-sarif to 4.37.9 (#1474)e6bcd7d
chore(deps): bump github/codeql-action/analyze from 4.37.4 to 4.37.9 (#1475)00dec43
chore(deps): bump github/codeql-action/init from 4.37.4 to 4.37.9 (#1476)8d5c3b7
feat: allow diskStorage without options (#1471)02f6e82
fix: report the decoded filename on LIMIT_FILE_SIZE (#1478)bc3f72d
fix: decode escaped field names, not just filenames (#1473)2661325
docs: add JSDoc to the public API (#1467)53337f9
fix: remove late-completing uploads aborted before the engine names
them7f2c9ab
feat: add streamHandler option to feed busboy from pre-consumed bodies
(#1466)This version was pushed to npm by GitHub Actions, a new releaser for multer since your current version.