Русские имена файлов в setRequestHeader
Загрузка файлов через браузер поддерживается объектом XMLHttpRequest().
Для отправки имени файла используется фрагмент кода:
'Content-Disposition: form-data; name='+(fieldName || 'file')+'; filename=' + fileName + '\r\n';Code language: JavaScript (javascript)
Если этим способом загружать на сервер файлы с символами кириллицы (как впрочем любых других кодировок не соответствующих рекомендациям) то имена файлов будут искажены, точнее те символы, которые не поддерживаются объектом.
Обойти это можно используя функцию encodeURIComponent():
'Content-Disposition: form-data; name='+(fieldName || 'file')+'; filename=' +
encodeURIComponent(fileName) + '\r\n';
Code language: JavaScript (javascript)
Для обратного кодирования в бакенде необходимо использовать функцию urldecode():
$showFileName=urldecode($_FILES['fieldName']['name']);
Code language: PHP (php)
No Comments