Ifile не загружается в базу данных - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь загрузить файл в базе данных с помощью codeigniter, изображение сохраняется в папке, но у меня возникают проблемы с сохранением данных в базе данных, я не знаю, где я ошибаюсь. пожалуйста, кто-нибудь может направить меня, что я делаю неправильно? я новичок в концепции codeigniter.

upload.php (контроллер)

    <?php

       class Upload extends CI_Controller {

          public function __construct() { 
             parent::__construct(); 
             $this->load->helper(array('form', 'url')); 
          }

          public function index() { 
             $this->load->view('upload_form', array('error' => ' ' )); 
          } 

          public function do_upload() { 
             $config['upload_path']   = './uploads/'; 
             $config['allowed_types'] = 'gif|jpg|png'; 
             $config['max_size']      = 100; 
             $config['max_width']     = 1024; 
             $config['max_height']    = 768;  
             $this->load->library('upload', $config);

             if ( ! $this->upload->do_upload('filename')) {
                $error = array('error' => $this->upload->display_errors()); 
                $this->load->view('upload_form', $error); 
             }

             else { 
                $data = array('upload_data' => $this->upload->data('filename'),$this->input->post()); 
                $this->Upload_model->saverecords($data);
                //$this->load->view('upload_success', $data); 
             } 
          } 
       } 
    ?>

Upload_model.php (модель)

    <?php
        class Upload_model extends CI_Model 
        {
            //Insert
            function saverecords($data)
            {
                //saving records
                $this->db->insert('latest_news', $data); 
            }
        }
    ?>

Upload_form.php (вид)

        <html>

       <head> 
          <title>Upload Form</title> 
       </head>

       <body> 
          <?php echo $error;?> 
          <?php echo form_open_multipart('upload/do_upload');?> 

          <form action = "" method = "POST">
             <input type = "file" name = "filename" size = "20" /> 
             <br /><br /> 
             <input type = "submit" value = "upload" /> 
          </form> 

       </body>

    </html>

1 Ответ

0 голосов
/ 03 июля 2018

Вы объявляете <form> дважды! Удалите <form action = "" method = "POST"> полностью и просто используйте выше form_open_multipart:

      <?php echo $error;?> 
      <?php echo form_open_multipart('upload/do_upload');?> 
         <input type="file" name="filename" size="20" /> 
         <br /><br /> 
         <input type="submit" value="upload" /> 
      </form>

Также нет необходимости в таких местах, как type = "submit"

Тогда в вашем коде:

         if ( ! $this->upload->do_upload('filename')) {
            $error = array('error' => $this->upload->display_errors()); 
            $this->load->view('upload_form', $error); 
         }

         else { 
            //$data = array('upload_data' => $this->upload->data('filename'),$this->input->post());
            $data['upload_data'] = $this->upload->data('file_name');
            $this->load->model('upload_model');
            $this->upload_model->saverecords($data);
            //$this->load->view('upload_success', $data); 
         } 

На будущее:

Не просто выполните $this->input->post(), чтобы назначить пары ключ-значение тем, которые находятся в дБ. Это не очень контролируется и может привести к проблемам. Вместо этого просто определите это. Поэтому, если вы добавите другие данные, они будут выглядеть примерно так:

$data = array(
    'example1_fieldname' => $this->input->post('example1_fieldname');
    'upload_data' => $this->upload->data('file_name');
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...