Я создавал веб-сайт, на котором пользователь может загружать файлы на aws-s3
, minio
а также azure-storage
все работает нормально,
Но когда мой клиент загружает файлы с именем, которые содержат символы, подобные этим,
AAÀÃÁÆÂÅÄÞC?ÇÈEÉËÊGGIÏÎÍÌLLÑNØÓÒÔÕÖSS?Š?TÙÛÚÜÝZŽZâaaáaãA??åà??A?aäæ?????þcCCcç??c?Cc???dddÐdDddd?d?dðd?????eeeEEeeE?Eê?èëé?fƒf?fggGgGgGg?g?ggggg?g?g?ggg?h?HHh??îïíìiiiI?iiII?I??I???i?j?j?j?jJjjj?j?j?j?j?j?j?j?j?k?kKk?k?kkk?k?l?l?lllllllLlLl?lLlll?l????ñ?N????n?n?Nn??oõôOoOOoø?oò?OoóOœŒö?????qrrRrR?R????Sšs?s?s????ß?t?t?tTt?t?tTtTt™tu?UuUuUUuUuUUuuUUuUùúû?uuUUuuü?v?v?v?wwwWw?yýÿŸY?ž??z?z??~.[]{}()@!#$%^&*+|¦„®©
или аналогично этим, эти символы становятся головной болью, как и файл, успешно загруженный, но при извлечении его из источников он не отображается на странице HTML, а отображается только испорченное изображение.
Я преобразовал эти символы в настоящие алфавиты (пример: ‘Ĵ’ => ‘j’, ‘Ĉ’ => ‘c’, ‘ǎ’ => ‘a’), но теперь мой клиент хочет сохранить эти символы такими, как есть, и когда пользователь скачал файл, им нужно такое же имя файла, как они загружены,
В бэкэнде я использую PHP
и база данных PostgreSQL
,
Как я могу решить эту проблему.
Вы не можете использовать эти символы в названии блоба. Увидеть эта статья о присвоении имен и ссылок на BLOB-объекты. Что вы можете попробовать, так это сохранить оригинальное имя в свойстве [metadata] после загрузки большого двоичного объекта и получить его при загрузке или обращении к большому двоичному объекту.
Других решений пока нет …