2012-07-05 13 views
5

पर मैं एपीआई का उपयोग कर अपने नियंत्रक पर सीएसवी फ़ाइल पोस्ट करना चाहता हूं। मैं फिल स्टर्जन द्वारा कोडिनेटर आरईएसटी लाइब्रेरी का उपयोग कर रहा हूं। क्लाइंट साइड पर मेरे आरईएसटी सर्वर पर सीएसवी आयात करने के लिए कैसे कार्यान्वित करें। मैं सिर्फ यह पूछना चाहता हूं क्योंकि मुझे इसके बारे में कोई दस्तावेज नहीं मिल रहा है।कोडिग्निटर आरईएसटी सीएसवी आयात mysql

+0

आप इस प्रश्न के साथ पर्याप्त स्पष्ट नहीं हैं। कोडिनेटर आरईएसटी सामान्य कोडिग्निटर के समान ही है लेकिन अंतर केवल विधि और प्रतिक्रिया को बुला रहा है। सामान्य कोडनिर्देशक में हम 'नियंत्रक/फ़ंक्शन' कहते हैं जहां REST में यह 'संसाधन/{resource_id}/child_resource/{child_resource_id}' होना चाहिए। मुझे कोई बात नहीं है कि हेडर को '.xls' फ़ाइल – KuKu

+0

clealy के रूप में भेजने में कोई समस्या होगी और सरल शब्दों में हमें बताएं कि आप क्या चाहते हैं –

+0

@heheelshan मैं क्लाइंट साइड एपीआई का उपयोग कर अपने नियंत्रक पर सीएसवी फ़ाइल पोस्ट करना चाहता हूं jquery.post और csv फ़ाइल डेटा निकालें और mysql पर आयात करें। –

उत्तर

27

यह करने का एक आसान तरीका यहां है। मुझे नहीं पता कि लोग क्या करते हैं लेकिन मैं इस

यह मेरी सीएसवी रीडर लाइब्रेरी है, इसे पुस्तकालय फ़ोल्डर में 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; 
    } 
} 
?> 

और नियंत्रक विधि

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

और यह दृश्य है

<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> 

नोट: यह केवल एक फ़ाइल जो सर्वर पर मौजूद पढ़ा जाएगा। यदि अपलोड करने के लिए फ़ाइल की आवश्यकता है File Upload Class फ़ाइल अपलोड करने के लिए और इसे अपने सर्वर पर किसी स्थान पर सहेजें, तो parse_file विधि में स्थित फ़ाइल का पथ दें। और सबकुछ ठीक काम करेगा।

+0

धन्यवाद मैं इसे आज़मा दूंगा, मुझे बस डेटा को निकालने और इसे पास करने के लिए डेटा की आवश्यकता है। –

+0

आप –

+0

मॉडल के लिए लौटाए गए सरणी को पास कर सकते हैं, अगर मेरे सीएसवी फ़ील्ड $ संलग्नक के बिना '' 'हैं? अगर मैं $ enclosure =' '; –

संबंधित मुद्दे