@AAApokin
Веб-разработчик

Как сделать транслитерацию файлов и папок при загрузке на сервер?

Laravel 5
Использую https://github.com/barryvdh/laravel-elfinder для загрузки файлов на сервер.
Необходимо дописать функционал, который при загрузке файлов на сервер, производил транслитерацию кириллицы в именах файлов и папок.
Как я это вижу:
Нужно переопределить метод, который отвечает за копирование/перенос или направляет данные о файле/файл в последующую обработку, и использовать например str_slug()
Кто сталкивался с такой задачей?
Подскажите куда копать. Хочется сделать все грамотно. Не костыльно.
В данный момент роюсь в \vendor\barryvdh
  • Вопрос задан
  • 409 просмотров
Пригласить эксперта
Ответы на вопрос 1
@apokin
Веб-разработчик
laravel-elfinder делается это так
часть конфига прилагаю
'options' => array(
        'bind'   => [
            'upload.pre mkdir.pre mkfile.pre rename.pre archive.pre ls.pre' => [
                'Plugin.Normalizer.cmdPreprocess',
                'Plugin.Sanitizer.cmdPreprocess'
            ],
            'ls'                                                            => [
                'Plugin.Normalizer.cmdPostprocess',
                'Plugin.Sanitizer.cmdPostprocess'
            ],
            'upload.presave'                                                => [
                'Plugin.AutoResize.onUpLoadPreSave',
                'Plugin.Normalizer.onUpLoadPreSave',
                'Plugin.Sanitizer.onUpLoadPreSave'
            ],

        ],
        'plugin' => [
            'Normalizer' => [
                'enable' => true,
                'targets'  => ['\\','/',':','*','?','"','<','>','|',' '], // target chars
                'replace'  => '_',    // replace to this
                'convmap' => [
                    ',' => '_',
                    '^' => '_',
                    "а" => "a",
                    "б" => "b",
                    "в" => "v",
                    "г" => "g",
                    "д" => "d",
                    "е" => "e",
                    "ё" => "e",
                    "ж" => "zh",
                    "з" => "z",
                    "и" => "i",
                    "й" => "j",
                    "к" => "k",
                    "л" => "l",
                    "м" => "m",
                    "н" => "n",
                    "о" => "o",
                    "п" => "p",
                    "р" => "r",
                    "с" => "s",
                    "т" => "t",
                    "у" => "u",
                    "ф" => "f",
                    "х" => "h",
                    "ц" => "ts",
                    "ч" => "ch",
                    "ш" => "sh",
                    "щ" => "shch",
                    "ы" => "y",
                    "э" => "e",
                    "ю" => "yu",
                    "я" => "ya",
                    "А" => "a",
                    "Б" => "b",
                    "В" => "v",
                    "Г" => "g",
                    "Д" => "d",
                    "Е" => "e",
                    "Ё" => "e",
                    "Ж" => "zh",
                    "З" => "z",
                    "И" => "i",
                    "Й" => "j",
                    "К" => "k",
                    "Л" => "l",
                    "М" => "m",
                    "Н" => "n",
                    "О" => "o",
                    "П" => "p",
                    "Р" => "r",
                    "С" => "s",
                    "Т" => "t",
                    "У" => "u",
                    "Ф" => "f",
                    "Х" => "h",
                    "Ц" => "ts",
                    "Ч" => "ch",
                    "Ш" => "sh",
                    "Щ" => "shch",
                    "Ы" => "y",
                    "Э" => "e",
                    "Ю" => "yu",
                    "Я" => "ya",
                    " " => "_"
                ]
            ],
        ],
    ),
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы