Расширение файла `` не допускается

Столкнулся с такой вот проблемой Расширение файла `` не допускается:


В системных настройках upload_files конечно же был указан png
txt,html,htm,xml,js,css,zip,gz,rar,z,tgz,tar,mp3,mp4,aac,wav,au,wmv,avi,mpg,mpeg,pdf,doc,docx,xls,xlsx,ppt,pptx,tiff,svg,svgz,gif,psd,ico,bmp,odt,ods,odp,odb,odg,odf,md,ttf,woff,eot,scss,less,css.map,jpg,jpeg,png,php
При этом файл успешно загружался и всё равно было такое уведомление.
Мне конечно же не мешало, но заказчику не нравилось.

Оказалось, что всё дело в компоненте filetranslit.
После отключения или удаления плагина, всё начинает работать корректно.



Но, если всё же вам надо транслитерировать название файлов при загрузке, можно воспользоваться версией плагина от Ильи Уткина (за что ему спасибо)
<?php
switch ($modx->event->name) {
    case 'OnFileManagerUpload':
        $generator = $modx->newObject('modResource');
        $bases = $source->getBases($directory);
        $fullPath = $bases['pathAbsolute'].ltrim($directory,'/');
        $directory = $source->fileHandler->make($fullPath);
        foreach ($files as $file) {
            $fileniz = mb_strtolower($file['name']);
            $ext = @pathinfo($fileniz,PATHINFO_EXTENSION);
            rename($directory->getPath().$file['name'], $directory->getPath() .
            str_replace($ext, '.'.$ext, $generator->cleanAlias($file['name'])));
        }
        break;
    default: break;
}
return true;
То есть, чтобы не создавать новый плагин, в этом же плагине filetranslit полностью заменяете код на версию от Ильи и будет работать.
В обсуждении на сайте у Ильи есть и другие варианты и версии как транслитерировать, так что вы вправе выбрать и другие варианты.
Возможно кто-то перепишет и самую версию filetranslit и тогда поделитесь своим решением в этом топике.
Всем успехов и не тратьте время на поиски решения :)
Кирилл
27 декабря 2019, 12:03
modx.pro
8
2 598
+8
Поблагодарить автора Отправить деньги

Комментарии: 3

Павел Романов
27 декабря 2019, 14:43
+2
Можно не менять плагин, а в системных настройках в разделе «Дружественные URL» в параметре
friendly_alias_restrict_chars_pattern убрать точку, чтобы она не вырезалась из имени файла при его закачке.
Либо в friendly_alias_restrict_chars поставить alphanumeric — тогда шаблон использоваться не будет.
    blackseabreathe
    22 декабря 2022, 17:28
    0
    Спасибо, помогло.
    Evgeny
    29 апреля 2022, 00:32
    0
    Спасибо!
    Только один минус — буква «й» заменяется на символ «ĭ», хотя в таблице символов все нормально прописано:
    'й'=>'j'
    'Й'=>'j'
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3