В настоящее время, если я не предлагаю никаких расширений для класса, он не позволяет расширений. Я хотел бы разрешить все расширения. Есть ли способ сделать это без взлома ядра?
В 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 …