fix: closes #13729, fix filename encoding

This commit is contained in:
Barış Soner Uşaklı
2025-10-24 11:04:29 -04:00
parent 655c858b5d
commit 9410f466d8
5 changed files with 20 additions and 13 deletions

16
src/middleware/multer.js Normal file
View File

@@ -0,0 +1,16 @@
'use strict';
const multer = require('multer');
const storage = multer.diskStorage({});
const upload = multer({ storage,
// from https://github.com/TriliumNext/Trilium/pull/3058/files
fileFilter: (req, file, cb) => {
// UTF-8 file names are not well decoded by multer/busboy, so we handle the conversion on our side.
// See https://github.com/expressjs/multer/pull/1102.
file.originalname = Buffer.from(file.originalname, 'latin1').toString('utf-8');
cb(null, true);
}
});
module.exports = upload;

View File

@@ -85,9 +85,7 @@ function apiRoutes(router, name, middleware, controllers) {
router.post(`/api/${name}/manage/categories/:cid/name`, middleware.ensureLoggedIn, helpers.tryRoute(controllers.admin.categories.renameRemote));
router.delete(`/api/${name}/manage/categories/:cid`, middleware.ensureLoggedIn, helpers.tryRoute(controllers.admin.categories.removeRemote));
const multer = require('multer');
const storage = multer.diskStorage({});
const upload = multer({ storage });
const upload = require('../middleware/multer');
const middlewares = [
upload.array('files[]', 20),

View File

@@ -23,9 +23,7 @@ module.exports = function (app, middleware, controllers) {
router.get('/topic/teaser/:topic_id', [...middlewares], helpers.tryRoute(controllers.topics.teaser));
router.get('/topic/pagination/:topic_id', [...middlewares], helpers.tryRoute(controllers.topics.pagination));
const multer = require('multer');
const storage = multer.diskStorage({});
const upload = multer({ storage });
const upload = require('../middleware/multer');
const postMiddlewares = [
middleware.maintenanceMode,

View File

@@ -154,10 +154,7 @@ Auth.reloadRoutes = async function (params) {
});
});
const multer = require('multer');
const storage = multer.diskStorage({});
const upload = multer({ storage });
const upload = require('../middleware/multer')
const middlewares = [
upload.any(),
Auth.middleware.applyCSRF,

View File

@@ -54,9 +54,7 @@ helpers.setupApiRoute = function (...args) {
const [router, verb, name] = args;
let middlewares = args.length > 4 ? args[args.length - 2] : [];
const controller = args[args.length - 1];
const multer = require('multer');
const storage = multer.diskStorage({});
const upload = multer({ storage });
const upload = require('../middleware/multer');
middlewares = [
middleware.autoLocale,
middleware.applyBlacklist,