Codeigniter - загрузка нескольких файлов -> вставка в БД - возникли проблемы! - PullRequest
2 голосов
/ 25 июня 2010

Я использую Codeigniter и пытаюсь загрузить несколько файлов в базу данных. Файлы представляют собой отдельные поля, а не несколько файлов для одного поля.

Я подписался на этот пост - http://codeigniter.com/forums/viewthread/110130/P0/

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

Вот моя функция контроллера ...

function addStation(){
        // set common properties
        $data['title'] = 'Add new station';
        $data['action'] = site_url('admin/station/addStation');
        $data['link_back'] = anchor('admin/station/index/','Back to list of stations',array('class'=>'back'));

        // set validation properties
        $this->_set_fields();
        $this->_set_rules();

        $config['allowed_types'] = 'pdf|xls|doc|docx';
    $config['max_size'] = '1000';
    $config['max_width']  = '1024';
    $config['max_height']  = '768';
    $path_to_uploads='./uploads/files/stations';
    $config['upload_path'] = $path_to_uploads;

    // File specific (overrule global and optional)
$config['logo_file']['upload_path']   = './uploads/images/stations';
$config['logo_file']['allowed_types'] = 'gif|jpg|png';


    $this->load->library('upload', $config);
    //add this
    $this->upload->initialize($config);
if (!$this->upload->do_upload(array('rajar_file','playlist_file','map_file', 'logo_file'))){
        $error = $this->upload->display_errors();
        echo "<script>alert($error);</script>";
    }else{
        $data = array('upload_data' => $this->upload->data(array('rajar_file','playlist_file','map_file', 'logo_file')));

        $rajar_file_name = $upload_data['rajar_file']['file_name'];
        $rajar_full_file_path = $path_to_uploads.'/'.$rajar_file_name;

         $playlist_file_name = $upload_data['playlist_file']['file_name'];
        $playlist_full_file_path = $path_to_uploads.'/'.$playlist_file_name;

         $map_file_name = $upload_data['map_file']['file_name'];
        $map_full_file_path = $path_to_uploads.'/'.$map_file_name;

         $logo_file_name = $upload_data['logo_file']['file_name'];
        $logo_full_file_path = $path_to_uploads.'/'.$logo_file_name;
    }

// run validation
        if ($this->validation->run() == FALSE){
            $data['message'] = '';
        }else{
            // save data
            $station = array('name' => $this->input->post('name'),
                            'rajar' => $rajar_full_file_path,
                            'playlist' => $playlist_full_file_path,
                            'map' => $map_full_file_path,
                            'logo' => $logo_full_file_path    );
            $id = $this->stationModel->save($station);

            // set form input name="id"
            $this->validation->id = $id;

            // set user message
            $data['message'] = '<div class="success">add new station success</div>';
        }

          $this->template->set('title', 'Admin - Add New Station!');
      $this->template->load('admin/template', 'admin/stationEdit', $data);


    }

После отправки формы я получаю следующие ошибки ...

Сообщение: неопределенная переменная: rajar_full_file_path

Сообщение: неопределенная переменная: playlist_full_file_path

Сообщение: неопределенная переменная: map_full_file_path

Сообщение: неопределенная переменная: logo_full_file_path

Неужели я ненормальный, не могу понять?

Спасибо Dan

Ответы [ 2 ]

1 голос
/ 25 июня 2010

Кажется, что ваш код вводит первый оператор if, затем проходит проверку формы (таким образом, никогда не определяя ваши переменные) и затем пытается использовать эти переменные во втором блоке кода else.

1 голос
/ 25 июня 2010

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

вместо:

    $error = $this->upload->display_errors();
    echo "<script>alert($error);</script>";

try:

    $error = $this->upload->display_errors();
    $data['message'] = $error;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...