2012-07-05 36 views
5

Tôi muốn đăng tệp csv trên bộ điều khiển của mình bằng API.Tôi đang sử dụng Thư viện REST Codeigniter bởi phil sturgeon. Làm thế nào để thực hiện trên phía khách hàng việc nhập khẩu CSV vào máy chủ REST của tôi. Tôi chỉ muốn hỏi vì tôi không thể tìm thấy bất kỳ tài liệu nào về nó.Nhập mã CSV REST Codeigniter vào mysql

+0

Bạn không đủ rõ ràng với câu hỏi. Codeigniter REST gần giống với Codeigniter bình thường nhưng sự khác biệt chỉ là gọi phương thức và đáp ứng. Trong codeigniter bình thường, chúng ta gọi là 'controller/function' trong đó REST phải là' resource/{resource_id}/child_resource/{child_resource_id} '. Tôi không có vấn đề gì khi gửi tiêu đề dưới dạng tệp .xls' – KuKu

+0

clealy và đơn giản cho chúng tôi biết bạn muốn gì –

+0

@raheelshan Tôi muốn đăng tệp csv trên bộ điều khiển của mình bằng API phía ứng dụng khách jquery.post và trích xuất dữ liệu tệp csv và nhập vào mysql. –

Trả lời

27

Đây là cách dễ dàng để thực hiện việc này. Tôi không biết những gì mọi người làm nhưng tôi sử dụng này

Đây là thư viện trình đọc csv của tôi, Lưu thư mục này trong thư viện dưới dạng csvreader.php.

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

class CSVReader { 

    var $fields;   /** columns names retrieved after parsing */ 
    var $separator = ';'; /** separator used to explode each line */ 
    var $enclosure = '"'; /** enclosure used to decorate each field */ 

    var $max_row_size = 4096; /** maximum row size to be used for decoding */ 

    function parse_file($p_Filepath) 
    { 
     $file   = fopen($p_Filepath, 'r'); 
     $this->fields = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure); 
     $keys_values  = explode(',',$this->fields[0]); 

     $content   = array(); 
     $keys   = $this->escape_string($keys_values); 

     $i = 1; 
     while(($row = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure)) != false) 
     { 
      if($row != null) { // skip empty lines 
       $values   = explode(',',$row[0]); 
       if(count($keys) == count($values)){ 
        $arr   = array(); 
        $new_values = array(); 
        $new_values = $this->escape_string($values); 
        for($j=0;$j<count($keys);$j++){ 
         if($keys[$j] != ""){ 
          $arr[$keys[$j]] = $new_values[$j]; 
         } 
        } 
        $content[$i] = $arr; 
        $i++; 
       } 
      } 
     } 
     fclose($file); 
     return $content; 
    } 

    function escape_string($data) 
    { 
     $result = array(); 
     foreach($data as $row){ 
      $result[] = str_replace('"', '',$row); 
     } 
     return $result; 
    } 
} 
?> 

Và phương pháp điều khiển

function readExcel() 
{ 
     $this->load->library('csvreader'); 
     $result = $this->csvreader->parse_file('Test.csv');//path to csv file 

     $data['csvData'] = $result; 
     $this->load->view('view_csv', $data); 
} 

Và đây là cái nhìn

<table cellpadding="0" cellspacing="0" width="100%"> 
    <tr> 
      <td width = "10%">ID</td> 
      <td width = "20%">NAME</td> 
      <td width = "20%">SHORT DESCRIPTION</td> 
      <td width = "30%">LONG DESCRIPTION</td> 
      <td width = "10%">STATUS</td> 
      <td width = "10%">PARENTID</td> 
    </tr> 

      <?php foreach($csvData as $field){?> 
       <tr> 
        <td><?php echo $field['id']?></td> 
        <td><?php echo $field['name']?></td> 
        <td><?php echo $field['shortdesc']?></td> 
        <td><?php echo $field['longdesc']?></td> 
        <td><?php echo $field['status']?></td> 
        <td><?php echo $field['parentid']?></td> 
       </tr> 
      <?php }?> 
</table> 

Lưu ý: Điều này sẽ chỉ đọc một tập tin mà tồn tại trên máy chủ. Nếu tệp cần được tải lên, hãy sử dụng File Upload Class để tải lên tệp và lưu tệp đó vào một số vị trí trên máy chủ của bạn, sau đó cung cấp đường dẫn tệp được định vị theo phương thức parse_file. Và mọi thứ sẽ hoạt động tốt.

+0

Cảm ơn tôi sẽ cho nó một thử Tôi chỉ cần dữ liệu để trích xuất và chuyển nó vào mô hình. –

+0

bạn có thể chuyển mảng được trả về cho mô hình –

+0

làm thế nào nếu trường csv của tôi không có $ bao vây '' '? Nó trả về lỗi nếu tôi đặt $ enclosure =' '; –

Các vấn đề liên quan