2017-08-17 3 views
0

Je veux programmer la fonction pour télécharger des fichiers Excel vers un db sql. J'ai un problème, car les $this->upload->do_upload('file') ne s'exécutent pas et je n'arrive pas à comprendre pourquoi.Fichier CodeIgniter Téléchargement de classe, erreur avec do_upload

Voici mon contrôleur:

function import(){ 
    $this->breadcrumbs[] = array(
      "title" => "Import", 
      "link" => "interview/import" 
     ); 
    $this->template->load("interview_import", $this->breadcrumbs, $data); 
} 

function import_data() {   
    $this->load->library("form_validation");   
    $config = array(
     'upload_path' => FCPATH. 'upload/', 
     'allowed_types' => 'xls' 
     ); 
    $this->load->library('upload', $config); 
    if($this->upload->do_upload('file')) { 
     $data = $this->upload->data(); 
     @chmod($data['full_path'], 0777); 
    } 
    $this->load->library("Spreadsheet_Excel_Reader"); 
    $this->spreadsheet_excel_reader->setOutputEncoding('CP1251'); 

    $this->spreadsheet_excel_reader->read($data['full_path']); 
    $sheets = $this->spreadsheet_excel_reader->sheets[0]; 
    error_reporting(E_ALL^E_NOTICE); 

    $data_excel = array(); 
    for ($i = 2; $i <= $sheets[0]['numRows']; $i++) { 
     if ($sheets['cells'][$i][1] == '') { 
      break; 
     } 
     $data_excel[$i -1]['name'] = $sheets['cells'][$i][1]; 
     $data_excel[$i -1]['phone'] = $sheets['cells'][$i][2]; 
     $data_excel[$i -1]['address'] = $sheets['cells'][$i][3]; 

     /*for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) { 
      echo "\"".$data->sheets[0]['cells'][$i][$j]."\","; 
     } 
    echo "\n";*/ 
    } 
    echo '<pre>'; 
    print_r($data_excel); 
    echo '</pre>'; 
    die();  
} 

Et ceci est mon point de vue:

<?php  
     echo form_open_multipart('interview/import_data'); 
     echo form_upload('file'); 
     echo '<br/>'; 
     echo form_submit(null, 'Upload'); 
     echo form_close(); 
?> 

Avez-vous une idée de ce que je fais mal?

Lorsque vous essayez de télécharger je reçois le message d'erreur:

> Une erreur PHP a été rencontré de gravité: Mémento Message: Undefined variable: données Nom du fichier: contrôleurs/Interview.php Numéro de ligne: 521 backtrace: fichier: C: \ Users \ A66155193 \ Desktop \ xampp \ htdocs \ yitt \ contrôleurs \ Application \ Interview.php ligne: 521 Fonction: _error_handler fichier: C: \ Users \ A66155193 \ Desktop \ xampp \ htdocs \ yitt \ index.php Ligne: 311 Fonction: require_once

Alors, évidemment, si l'article peut exécuter parce que:

Undefined variable: données

Merci pour votre aide!

Répondre

0

Après si l'état de l'enregistrement de do_upload que si le fichier est le téléchargement pas que ce qui est l'erreur

if($this->upload->do_upload('file')) { 
    $data = $this->upload->data(); 
    @chmod($data['full_path'], 0777); 
} else{ 
    $error = array('error' => $this->upload->display_errors()); 
    print_r($error); 
} 

Vous devez vérifier que la variable de données $ est en cours d'initialisation si la déclaration et au fond de son undefine dire un variable.

+0

"Le chemin de téléchargement ne semble pas être valide." ainsi que "Le nom de fichier n'est pas lisible". mais comment puis-je imprimer le nom de fichier pour voir ce qui ne va pas –

+0

Est-ce que votre chemin de téléchargement est sur la racine? –

+0

Si c'est sur la racine vous pouvez utiliser votre chemin de téléchargement comme ceci 'upload_path' => './upload/', –