2017-08-17 120 views
0

我想編程的功能上傳Excel文件到SQL數據庫。 我有一個問題,因爲$this->upload->do_upload('file')不執行,我不知道爲什麼。CodeIgniter文件上傳類,與do_upload錯誤

這裏是我的控制器:

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();  
} 

這是我的看法:

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

你有任何想法,我做錯了什麼?

當試圖上傳我得到的錯誤信息:

>一個PHP錯誤遇到 嚴重性:注意 消息:未定義的變量:數據 文件名:控制器/ Interview.php 行號:521 回溯: 文件:C:\用戶\ A66155193 \桌面\ XAMPP \ htdocs中\ yitt \程序\ \控制器Interview.php 線:521 功能:_error_handler 文件:C:\用戶\ A66155193 \桌面\ XAMPP \ htdocs中\ yitt \ index.php Line:311 功能:require_once

所以很明顯的,如果子句可以執行,因爲:

未定義的變量:數據

謝謝您的幫助!

回答

0

如果do_upload檢查的條件,如果文件沒有上傳比什麼錯誤

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); 
} 

你必須檢查它,因爲$數據變量初始化的if語句,並在底部的說取消定義一個後變量。

+0

「上傳路徑似乎不是有效的。」以及「文件名不可讀」。但是我怎樣才能打印這個filname來查看錯誤 –

+0

你的上傳路徑是否在根目錄下? –

+0

如果它的根目錄u可以使用你的上傳路徑,就像這個'upload_path'=>'./upload/', –