php 封装原生数据导入的方法(csv文件格式)

    //前端---部分代码
    <form class="form-inline" style="margin-top: 20px" method="post" action="/admin/commerce/import" enctype="multipart/form-data" style="display:inline-block">
        <div class="form-group">
            <label for="commerce_file">选择文件</label>
            <input class="form-control input-sm" type="file" name="commerce_file">
        </div>
        <button type="submit" class="btn btn-info">数据导入按钮</button>
    </form>



  //后端---原生封装导入方法
    public function actionimport()
    {
        if(!$_FILES['commerce_file']['name'])
        {
            $this->success('请选择csv格式文件');
        }
        if($_FILES['commerce_file']['size'] >= '2097152')//2M
        {
            $this->success('文件不能超过2M');
        }
        //获取储存的临时文件名
        $csv_file = $_FILES['commerce_file']['tmp_name'];

        //打开文件获取可读权限
        $file = fopen($csv_file,"r");

        //输出文本中所有的行,直到文件结束为止
        while(! feof($file))
        {
            //函数从文件指针中读入一行并解析CSV 段
            $data_line = fgetcsv($file);

            if($data_line)
            {
                foreach($data_line as $k => $v)
                {
                    //指定文件从gbk编码转换,为utf-8编码
                    $data_line[$k] = iconv('gbk','utf-8',$v);
                }
                $data[] = $data_line;
            }
        }
        //关闭打开文件
        fclose($file);
        $first = $data[0];
        //设定表头标题名称
        $name = array('ID','名称');
        if($first)
        {
            foreach($first as $k => $v)
            {
                if($v != $name[$k])
                {
                    $this->success('文件格式错误,请查看文件格式核实');
                }
            }
        }
        if($data)
        {
            //删除第一行数据
            unset($data[0]);
            //统计插入数量
            $sum = 0;
            foreach($data as $v)
            {
                //插入数据方法自己根据框架定义
                $rs = Yii::app()->getDb()->createCommand()->insert('sdk_commerce', array(
                    'id' => $v[0],
                    'name' => $v[1]
                ));
                $sum += $rs;
            }
            $this->success('成功导入<font color=red><b>'.$sum.'</b></font>条数据','/admin/commerce/list/');
        }
    }
原文地址:https://www.cnblogs.com/cxx8181602/p/8512803.html