Имейте в виду, что вы очищаете /, \ и \ 0, если они отправлены пользовательскими агентами maliciuos.
Если ваша файловая система полностью поддерживает Unicode, я бы сохранил их, как они были отправлены агентом.
Мое предпочтительное решение:
Используйте уникальный идентификатор в качестве имени файла и сохраните реальное имя файла в дополнительном файле или базе данных. Таким образом, ваше приложение становится переносимым для систем, не поддерживающих Unicode