Страница 1 из 1

Как разрешить формат файла с спец. символом?

СообщениеДобавлено: 11 фев 2013, 15:15
guyasyou
Мне нужно на сайт загружать файл с форматом .jef+. Когда я его ввожу в список разрешенных и сохраняю, движок отрубает плюсик. А при попытке загрузить, он различает jef+ от jef.
Что делать?

Re: Как разрешить формат файла с спец. символом?

СообщениеДобавлено: 11 фев 2013, 16:53
cmsservice
А почему именно jef+. В чем глобальная задача-то состоит? :)

Re: Как разрешить формат файла с спец. символом?

СообщениеДобавлено: 11 фев 2013, 17:20
guyasyou
Ну формат такой. мне этот файл надо загрузить через менеджер файлов и в сет добавить. А менеджер файлов не хочет его принимать.

Это цифровой товар.

Re: Как разрешить формат файла с спец. символом?

СообщениеДобавлено: 11 фев 2013, 17:35
cmsservice
Понятно. Там перед загрузкой используется функция нормализации имени из текст хелпера. Эта функция использует регулярное выражение и про "+" понятное дело, ничего не знает. Т.ч. надо в ней добавить в регулярное выражение плюсик. В общем и целом простой вариант. Есть еще проще - хранить все файлы в zip формате.

Re: Как разрешить формат файла с спец. символом?

СообщениеДобавлено: 11 фев 2013, 18:40
guyasyou
Код: Выделить всё
const REGEX_INVALID_EXTENSION_CHARS = '{[^a-z0-9]}i';

$types = preg_replace(self::REGEX_INVALID_EXTENSION_CHARS,'',$types);


я так понимаю это плюсик отсекает. как исправить?
Эту вещь не могу понят '{[^a-z0-9]}i'

Re: Как разрешить формат файла с спец. символом?

СообщениеДобавлено: 12 фев 2013, 11:07
cmsservice
guyasyou писал(а):я так понимаю это плюсик отсекает. как исправить?

Тааак, какая версия C5-то? Если 5.6, то Вы куда-то не туда смотрите. Надо смотреть на метод sanitizeFileSystem у текст хелпера и дальше по цепочке.

guyasyou писал(а):Эту вещь не могу понят '{[^a-z0-9]}i'

Ну а чего тут непонятного, обычное регулярное выражение. Почитайте на досуге по этой теме, в сети полно информации, очень помогает в работе, хотя и медленные они в PHP по сравнению с perl. :)

Re: Как разрешить формат файла с спец. символом?

СообщениеДобавлено: 12 фев 2013, 13:15
guyasyou
Код: Выделить всё
const REGEX_INVALID_EXTENSION_CHARS = '{[^a-z0-9+]}i';

В список разрешенных формат добавился, файл загрузился.
Тока вот уже после загрузки плюсик отрезало.

Re: Как разрешить формат файла с спец. символом?

СообщениеДобавлено: 12 фев 2013, 16:36
cmsservice
Ну так правильно отрезало, она же при загрузке вызывает метод import у file_importer'а, который первое, что делает, обрабатывает имя файла с помощью метода sanitize хелпера file и в этом методе умирают все недопустимые символы :)

Re: Как разрешить формат файла с спец. символом?

СообщениеДобавлено: 12 фев 2013, 17:30
guyasyou
Код: Выделить всё
public function sanitizeFileSystem($handle) {
      return $this->urlify($handle);
   }   

   public function urlify($handle) {
      Loader::library('3rdparty/urlify');
      $handle = URLify::filter($handle);
      return $handle;
   }

Оно? Просто urlify еще и ссылки правит я так понял, и ковыряние его не оч. не?

Кстати, вот я ковырнул C:\WebServer\www\concrete\helpers\concrete\file.php

Теперь как его поднять, чтобы движок использовал мой правлненный вариант. так: C:\WebServer\www\helpers\concrete\file.php ?