2015-09-14 5 views
0

Привет Я пытаюсь импортировать CSV в базу данных MYSQL с использованием библиотеки CI. Но я получаю эту ошибку в контроллере, что тип файла теперь разрешенОшибка при загрузке файла CSV в Codeigniter

Контроллер:

<?php 

    class Csv extends CI_Controller { 

    function __construct() { 
     parent::__construct(); 
     $this->load->model('csv_model'); 
     $this->load->library('csvimport'); 
    } 

    function index() { 
     $data['addressbook'] = $this->csv_model->get_addressbook(); 
     $this->load->view('csvindex', $data); 
    } 

    function importcsv() { 
     $data['addressbook'] = $this->csv_model->get_addressbook(); 
     $data['error'] = ''; //initialize image upload error array to empty 

     $config['upload_path'] = './uploads/'; 
     $config['allowed_types'] = 'csv'; 
     $config['max_size'] = '1000'; 

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


     // If upload failed, display error 
     if (!$this->upload->do_upload()) { 
      $data['error'] = $this->upload->display_errors(); 

      $this->load->view('csvindex', $data); 
     } else { 
      $file_data = $this->upload->data(); 
      $file_path = './uploads/'.$file_data['file_name']; 

      if ($this->csvimport->get_array($file_path)) { 
       $csv_array = $this->csvimport->get_array($file_path); 
       foreach ($csv_array as $row) { 
        $insert_data = array(
         'firstname'=>$row['firstname'], 
         'lastname'=>$row['lastname'], 
         'phone'=>$row['phone'], 
         'email'=>$row['email'], 
        ); 
        $this->csv_model->insert_csv($insert_data); 
       } 
       $this->session->set_flashdata('success', 'Csv Data Imported Succesfully'); 
       redirect(base_url().'csv'); 
       //echo "<pre>"; print_r($insert_data); 
      } else 
       $data['error'] = "Error occured"; 
       $this->load->view('csvindex', $data); 
      } 

     } 

    } 
    /*END OF FILE*/ 

Модель:

<?php 

    class Csv_model extends CI_Model { 

    function __construct() { 
     parent::__construct(); 

    } 

    function get_addressbook() {  
     $query = $this->db->get('addressbook'); 
     if ($query->num_rows() > 0) { 
      return $query->result_array(); 
     } else { 
      return FALSE; 
     } 
    } 

    function insert_csv($data) { 
     $this->db->insert('addressbook', $data); 
    } 
    } 
    /*END OF FILE*/ 

Я пытаюсь импортировать CSV с помощью PHP CodeIgniter. Теперь я получаю сообщение об ошибке

Тип файла, который вы пытаетесь загрузить, не допускается.

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

+0

** конфиг/mimes.php ** вы должны добавить 'текст/обычный 'в csv key –

+0

@Abdulla Какой тип ключа? – Rajan

+0

поиск с csc. может быть в верхней части файла –

ответ

0

Вместо того, чтобы изменить тип пантомимы вы можете пойти с функцией CALLBACK Это добавит больше мобильности тоже ...

function importcsv() { 

     $data['addressbook'] = $this->csv_model->get_addressbook(); 
     $data['error'] = ''; //initialize image upload error array to empty 

    $this->form_validation->set_rules('uploaded_file','Uploaded file', 'trim|callback_chk_attachment'); 

     if($this->form_validation->run()){  
     $config['upload_path'] = './uploads/'; 
     $config['allowed_types'] = '*'; 
     $config['max_size'] = '1000'; 

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

     // If upload failed, display error 
     if (!$this->upload->do_upload()) { 
      $data['error'] = $this->upload->display_errors(); 

      $this->load->view('csvindex', $data); 
     } else { 
      $file_data = $this->upload->data(); 
      $file_path = './uploads/'.$file_data['file_name']; 

      if ($this->csvimport->get_array($file_path)) { 
       $csv_array = $this->csvimport->get_array($file_path); 
       foreach ($csv_array as $row) { 
        $insert_data = array(
         'firstname'=>$row['firstname'], 
         'lastname'=>$row['lastname'], 
         'phone'=>$row['phone'], 
         'email'=>$row['email'], 
        ); 
        $this->csv_model->insert_csv($insert_data); 
       } 
       $this->session->set_flashdata('success', 'Csv Data Imported Succesfully'); 
       redirect(base_url().'csv'); 
       //echo "<pre>"; print_r($insert_data); 
      } else 
       $data['error'] = "Error occured"; 
       $this->load->view('csvindex', $data); 
      } 

     } 




Call Back function for File Upload validation: 

     public function chk_attachment() // callback validation for check the attachment extension 
     { 
      $file_type = array('.csv'); 
      if(!empty($_FILES['uploaded_file']['name'])) 
      { 
       $ext = strtolower(strrchr($_FILES['uploaded_file']['name'],".")); 
       if(in_array($ext,$ext_array)) 
       { 
        return true; 
       } 
       else 
       { 
        $this->form_validation->set_message('chk_attachment','Attachment allowed only csv'); 
        return false; 
       } 
      } 
      { 
       $this->form_validation->set_message('chk_attachment','image field is required'); 
        return false; 
      } 
     } 
+0

получение ошибки Тип файла, который вы пытаетесь загрузить, не разрешен. – Rajan

+0

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

+0

Я только что использовал ваш код @blacmoon, но did'nt показать какие-либо diffrence :( – Rajan

Смежные вопросы