Intereting Posts
Создание операторов if для фильтрации сообщений по категориям из cpt в wordpress Выполнить php-файл с другого php Форма GET работает, форма POST не Передача пользовательских типов в PHP SOAP Как установить отношения «Жестокое» принадлежит ЧЕРЕЗ другую модель в Laravel? Запуск сеанса Zend Как автоматизировать миграцию (схему и данные) для приложения PHP / MySQL Присвоение значений, напечатанных PHP CLI, переменными оболочки Символьные данные MySql Каков надлежащий способ использования, включая скобки или без скобок в php Добавить как отдельные элементы корзины для продукта с пользовательскими данными в Woocommerce Лучший способ заменить переменные в текстовом формате с помощью PHP Удалить строку из начала строки Прикрепление значения текстового поля к ссылке в виде переменной без использования кнопки отправки Как я могу назвать Ant Builts с помощью Maven

Как заставить класс загрузки файлов CodeIgniter принимать все расширения?

В настоящее время, если я не предлагаю никаких расширений для класса, он не позволяет расширений. Я хотел бы разрешить все расширения. Есть ли способ сделать это без взлома ядра?

Solutions Collecting From Web of "Как заставить класс загрузки файлов CodeIgniter принимать все расширения?"

В Codeigniter 2 вам просто нужно определить разрешенные типы:

$config['allowed_types'] = '*'; 

Что я делаю:

 $ext=preg_replace("/.*\.([^.]+)$/","\\1", $_FILES['userfile']['name']); $fileType=$_FILES['userfile']['type']; $config['allowed_types'] = $ext.'|'.$fileType; 

Это автоматически разрешает все файлы в каждом вызове функции.

Ответ на ваш прямой вопрос: Нет, нет никакого способа сделать это без переопределения ядра

К хорошей новостью можно избежать взлома ядра, за руководство

В качестве дополнительного бонуса CodeIgniter позволяет вашим библиотекам распространять собственные классы, если вам просто нужно добавить некоторые функции в существующую библиотеку. Или вы даже можете заменить собственные библиотеки, просто разместив идентично именованные версии в папке приложений / библиотек.

Итак, чтобы заменить вашу библиотеку, вы можете скопировать файл Upload.php на свой

 application/libraries 

, а затем добавьте свою настраиваемую логику в этот файл Upload.php. Code Igniter будет включать этот файл, а не при загрузке библиотеки загрузки.

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

 application/libraries/MY_Upload.php class MY_Upload Extends CI_Upload{ function is_allowed_filetype(){ //my custom code here } } 

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

Пока похоже, что это возможно только через хак.

Я return true в строке 556 в system / libraries / Upload.php.

Вам просто нужно заменить это условие:

  if (! $this->is_allowed_filetype()) { $this->set_error('upload_invalid_filetype'); return false; } 

С:

  if (count($this->allowed_types) && !$this->is_allowed_filetype()) { $this->set_error('upload_invalid_filetype'); return false; } 

$config['allowed_types'] = '*'; Что будет загружать любые форматы файлов, например .exe или .jpegs …