CodeIgniter 3 - Ошибка загрузки файла: неопределенное свойство / вызов функции-члена в null - PullRequest
0 голосов
/ 17 сентября 2018

У меня проблема с codeigniter, когда я пытаюсь отправить файл.Страница возвращает мне следующую ошибку:

Ошибка при загрузке файла страницы codeigniter 3

Это мой модальный режим загрузки в представлении файла scadenze.php:

<div class="modal fade" id="uploadFile" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
 aria-hidden="true">
<div class="modal-dialog">
    <div class="modal-content">

        <?php echo form_open_multipart('corsi/upload_file');?>

        <div class="modal-header modal-blue">
            <h4 class="modal-title" id="myModalLabel">Carica File<br>
                <span id="corso" style="font-size: 14px;color: #888;"></span><span id="utente" style="font-size: 14px;color: #888;"></span>
            </h4>
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        </div>
        <div class="modal-body">

        <input type="file" name="userfile" size="20" />

        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-secondary" data-dismiss="modal">Annulla</button>

            <input id="uploadFileSubmit" type="submit" class="btn btn-primary" value="upload">

        </div>
    </form>
    </div>
</div>

А это мой файл контроллера Corsi.php:

<?php  
    ob_start();
    defined('BASEPATH') OR exit('No direct script access allowed');  
    class Corsi extends CI_Controller {  
        public function __Construct() {
            parent::__Construct();
            $this->load->helper(array('form', 'url'));
            if(!$this->session->userdata('logged_in')) {
                redirect(base_url());
            }
            $this->load->model('corsi_model');
        }
        //functions  
        function index(){  
            $data["title"] = "Lista Corsi"; 
            $this->load->view('frame/header_view');
            $this->load->view('frame/sidebar_nav_view');
            $this->load->view('corsi/index', $data);  
        }

        public function upload_file() {   
            $this->load->helper(array('form', 'url'));
            $config['upload_path']   = './uploads/attestati/';
            $config['allowed_types'] = 'gif|jpg|png';
            $config['max_size']      = 2048000;
            $config['max_width']     = 1024;
            $config['max_height']    = 768;

            $this->load->library('upload', $config);

            // check if folder exists
            if( ! is_dir($config['upload_path'])) {
                @mkdir($config['upload_path'], 0777, true);
            }
            if ( ! $this->corsi->upload_file('userfile')) {
                $this->load->view('frame/header_view');
                $this->load->view('frame/sidebar_nav_view');
                $this->load->view('corsi/creaclasse');
            } else {   
                $this->load->view('frame/header_view');
                $this->load->view('frame/sidebar_nav_view');
                $this->load->view('corsi/creaclasse');
            }
        }
    }

Кто-то может понять, где я не прав?Спасибо и извините за мой плохой английский.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

В вашей функции есть небольшая ошибка, вызывая ' upload_file ', вы указали неверное имя класса. Это должно быть загрузить вместо Corsi

Вместо этого неправильного вызова: -

$this->corsi->upload_file('userfile')

Используйте это правильное: -

$this->upload->do_upload('userfile')

Итак, вот исправленный код для вашей справки: -

<?php  
    ob_start();
    defined('BASEPATH') OR exit('No direct script access allowed');  
    class Corsi extends CI_Controller {  
        public function __Construct() {
            parent::__Construct();
            $this->load->helper(array('form', 'url'));
            if(!$this->session->userdata('logged_in')) {
                redirect(base_url());
            }
            $this->load->model('corsi_model');
        }
        //functions  
        function index(){  
            $data["title"] = "Lista Corsi"; 
            $this->load->view('frame/header_view');
            $this->load->view('frame/sidebar_nav_view');
            $this->load->view('corsi/index', $data);  
        }

        public function upload_file() {   
            $this->load->helper(array('form', 'url'));
            $config['upload_path']   = './uploads/attestati/';
            $config['allowed_types'] = 'gif|jpg|png';
            $config['max_size']      = 2048000;
            $config['max_width']     = 1024;
            $config['max_height']    = 768;

            $this->load->library('upload', $config);

            // check if folder exists
            if( ! is_dir($config['upload_path'])) {
                @mkdir($config['upload_path'], 0777, true);
            }
            if ( ! $this->upload->do_upload('userfile')) {
                $this->load->view('frame/header_view');
                $this->load->view('frame/sidebar_nav_view');
                $this->load->view('corsi/creaclasse');
            } else {   
                $this->load->view('frame/header_view');
                $this->load->view('frame/sidebar_nav_view');
                $this->load->view('corsi/creaclasse');
            }
        }
    }
0 голосов
/ 17 сентября 2018

В вашей функции для upload_file вы пишете:

$this->corsi->upload_file('userfile')

Что должно быть:

$this->upload->do_upload('userfile')


Ваше сообщение об ошибке говорит о том, что он не может найти свойство corsi в экземпляре $this.

Пожалуйста, проверьте документацию CodeIgniters на наличие file upload library, которую можно найти здесь .

...