NODE JS Неверное имя у файла с русским именем при загрузке с помощью Multer
Я пытаюсь загрузить файл с русским именем с помощью Multer и Express JS
Файл загружается на сервер, но имя становится не читаемым.
Например:
Оригинальное имя: Глоссарий.docx
Имя после загрузки:
"files": [
{
"filename":";>[email protected]",
"path": "shared\\storage\\attachments\\files_1633962007580.docx"
}
],
Как сохранить оригинальное имя файла
Пробовал по разному отправлять запросы через Postman, думал проблема в нем либо в заголовках также использовал cURL, но результат остался прежним.
Ответы (2 шт):
Думаю, что наиболее рациональный вариант решения - передавать имена файлов с русскими буквами в виде массива JSON в отдельном поле form-data.
Например вот так:
["Тестовый файл.jpg", "Test File 2.png"]
А затем по индексу соотносить массив с файлами и массив с оригинальными именами.
Попробуй следующее:
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);
}
Ответ нашел здесь.