sbh
@sbh

Как обрабатывать файлы с русскими именами при загрузке POST?

Есть клиент который загружает файлы POST запросом.
Имена у файлов иногда бывают на русском языке. И вот когда такие файлы приходят на сервер - он их не сохраняет.
Можно как-то это исправить не меняя клиента?
Я понимаю что можно в клиенте внести изменения - например добавить транслитерацию перед загрузкой, но на данный момент есть только возможность поменять серверную часть.

Файл сохраняется стандартно:
move_uploaded_file($_FILES["filename"]["tmp_name"], $upload_dir_name . '/' . $ClientName . "/" . $ContentTypeDir . '/' . $file_name);


Имя файла собственно выглядит на сервере в момент передачи вот так:
=?KOI8-R?B?4dfEz9TY0TIzMi50eHQ=?=
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 2
kimono
@kimono
Web developer
Так, видимо, вся проблема в вашем:
move_uploaded_file($_FILES["filename"]["tmp_name"], $upload_dir_name . '/' . $ClientName . "/" . $ContentTypeDir . '/' . $file_name);

Откуда берётся $file_name?
Сделайте через транслитерацию, либо вообще сохраняйте со случайным хешем:
move_uploaded_file($_FILES["filename"]["tmp_name"], $upload_dir_name . '/' . $ClientName . "/" . $ContentTypeDir . '/' . MyRandomGenerator::getString());
Ответ написан
SerafimArts
@SerafimArts
Senior Notepad Reader
Файл сохраняется стандартно:


Это не стандартно. Так никто не делает, просто потому, что это дыра в безопасности. Не то что дыра, а прям дырищща. Если клиент передаст вам файл с каким-нибудь именем (естественно заэкранированным, т.к. точки сервак не пропустит) "../../../index.php", например, вы его так и сохраните?

Делайте какой-нибудь "\md5($fileName . \random_int(0, \PHP_INT_MAX))" и не выдумывайте проблем себе.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
05 мая 2024, в 23:43
8000 руб./за проект
05 мая 2024, в 23:39
3000 руб./за проект
05 мая 2024, в 23:36
3000 руб./за проект