Api Codeigniter REST CSV导入到mysql

Api Codeigniter REST CSV导入到mysql,api,codeigniter,rest,codeigniter-2,Api,Codeigniter,Rest,Codeigniter 2,我想使用API在我的控制器上发布csv文件。我正在使用phil sturgeon的Codeigniter REST库。如何在客户端将CSV导入我的REST服务器。我只是想问一下,因为我找不到任何关于它的文档。这里是一个简单的方法。我不知道人们做什么,但我用这个 这是我的csv阅读器库,请将其保存在libraries文件夹中作为csvreader.php <?php if (!defined('BASEPATH')) exit('No direct script access allowed

我想使用API在我的控制器上发布csv文件。我正在使用phil sturgeon的Codeigniter REST库。如何在客户端将CSV导入我的REST服务器。我只是想问一下,因为我找不到任何关于它的文档。

这里是一个简单的方法。我不知道人们做什么,但我用这个

这是我的csv阅读器库,请将其保存在libraries文件夹中作为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;
    }   
}
?>
这就是我们的观点

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

身份证件
名称
简短描述
长描述
地位
父ID

注意:这将只读取服务器上存在的文件。如果需要上载文件,请使用上载文件并将其保存到服务器上的某个位置,然后在
parse_file
方法中给出所定位文件的路径。一切都会好起来。

你对这个问题还不够清楚。Codeigniter REST几乎与普通Codeigniter相同,但区别在于调用方法和响应。在普通的codeigniter中,我们调用
控制器/函数
,在REST中它必须是
资源/{resource\u id}/child\u资源/{child\u resource\u id}
。我不认为以
.xls
文件的形式发送标题会有任何问题,请用简单的话告诉我们您的想法want@raheelshan我想通过jquery.post使用客户端API在我的控制器上发布csv文件,提取csv文件数据并导入mysql。谢谢,我会尝试一下,我只需要提取数据并将其传递给model.you可以将返回的数组传递给modelhow,如果我的csv字段没有$enclosure'"'? 如果我放入$enclosure='',则返回错误@chrissen你可以发布一个例子,这样我就可以测试@Periback你应该根据csv中的字段顺序自己创建视图。如果需要不同的序列,则必须重新排列阵列。上面的示例代码运行良好。你可能在什么地方出错了。你能详细说出你面临的问题吗?
<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>