NODE JS Неверное имя у файла с русским именем при загрузке с помощью Multer

Я пытаюсь загрузить файл с русским именем с помощью Multer и Express JS

Файл загружается на сервер, но имя становится не читаемым.

Например:

Оригинальное имя: Глоссарий.docx

Имя после загрузки:

    "files": [
        {
            "filename":";>[email protected]",
            "path": "shared\\storage\\attachments\\files_1633962007580.docx"
        }
    ],

Как сохранить оригинальное имя файла

Пробовал по разному отправлять запросы через Postman, думал проблема в нем либо в заголовках также использовал cURL, но результат остался прежним.


Ответы (2 шт):

Автор решения: Ilya

Думаю, что наиболее рациональный вариант решения - передавать имена файлов с русскими буквами в виде массива JSON в отдельном поле form-data.

Например вот так:

["Тестовый файл.jpg", "Test File 2.png"]

А затем по индексу соотносить массив с файлами и массив с оригинальными именами.

→ Ссылка
Автор решения: Pogremix

Попробуй следующее:

file.originalname = Buffer.from(file.originalname, 'latin1').toString('utf8') 

Более подробный код ниже:


const storageConfig = multer.diskStorage({
destination: (req, file, cb) =>{
    cb(null, "uploads");
},
filename: (req, file, cb) =>{
    file.originalname = Buffer.from(file.originalname, 'latin1').toString('utf8')
    cb(null, file.originalname);
}

Ответ нашел здесь.

→ Ссылка