Fix UTF-8 encoding for special characters in filenames

multer/busboy decode multipart filename headers as latin1 by default,
which mangled umlauts and other non-ASCII characters end-to-end
(Größe.jpg arrived as Größe.jpg and was stored that way). Setting
defParamCharset: 'utf8' on the multer options makes the entire
upload pipeline consistent UTF-8.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
ScreenTinker 2026-04-28 10:13:41 -05:00
parent fcecf805ed
commit 76a0076b65

View file

@ -26,10 +26,14 @@ const fileFilter = (req, file, cb) => {
}
};
// `defParamCharset: 'utf8'` makes busboy decode multipart filename headers as UTF-8.
// Default is latin1, which mangles umlauts and other non-ASCII characters
// (e.g. "Größe.jpg" arrives as "Größe.jpg" and gets stored that way).
const upload = multer({
storage,
fileFilter,
limits: { fileSize: config.maxFileSize }
limits: { fileSize: config.maxFileSize },
defParamCharset: 'utf8'
});
module.exports = upload;