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

Этот код был выполнен до [window makeKeyAndVisible];, который находится внутри делегата приложения. Так что не удивительно, почему keyWindow был nil еще.

21
задан andyk 9 June 2009 в 17:24
поделиться

4 ответа

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

Я вставил return true в строку 556 в system / libraries / Upload.php.

2
ответ дан 29 November 2019 в 06:21
поделиться

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

Хорошая новость в том, что вы можете избежать взлома ядра, согласно руководству

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

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

application/libraries

, а затем добавить свою собственную логику в эту загрузку. 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
    }
}

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

4
ответ дан 29 November 2019 в 06:21
поделиться

Что я делаю:

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

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

4
ответ дан 29 November 2019 в 06:21
поделиться

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

        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;
        }
0
ответ дан 29 November 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: