欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php解析csv文件

程序员文章站 2022-05-01 18:37:55
php解析csv文件:php怎么解析csv文件呢?有什么方法呢?希望下面的文章对大家有所帮助。 public function actionImport() {      ...
php解析csv文件:php怎么解析csv文件呢?有什么方法呢?希望下面的文章对大家有所帮助。
public function actionImport() {
     //post请求过来的
        $fileName = $_FILES['file']['name'];
        $fileTmpName = $_FILES['file']['tmp_name'];
        //判断是否选择了上传的文件
        if (empty($fileName)) {
            $data['message'] = "请选择要上传的文件";
            return $this->render("batch_add", $data);
        }
        //判断选择上传的文件是不是csv格式
        if (explode(".", $fileName)[1] != "csv") {
            $data['message'] = "请选择csv格式的文件上传";
            return $this->render("batch_add", $data);
        } 

        //创建一个空数组,预放imageUrl
        $imageCollection = [];
        //打开要读的文件
        $handle = fopen($fileTmpName, 'r');
        //解析csv文件
        while (!feof($handle)) {
            //fgets方法按行读
            $result = fgets($handle);
            //判断读到的每一行是否有值
            if (!empty($result)) {
                $arrResult = explode(",", $result);
                $name = $arrResult[0];
                $age = $arrResult[1];
                $gender = $arrResult[2];
                //图片的原路径
                $imagePath = $arrResult[3];
                //图片的名字
                $image = basename($imagePath);

                $data['message'] = Person::savePerson($name, $age, $gender, $image);

                if ($data['message'] == 'add successful') {
                    //将每个图片的uri放到数组中
                    array_push($imageCollection, $imagePath);
                }
            }
        }
        //关闭文件流
        fclose($handle);

        //关闭文件流之后才能上传图片,注意:流和流是不能嵌套使用的
        if (!empty($imageCollection)) {

            foreach ($imageCollection as $value) {
                //将图片上传到服务器上
                move_uploaded_file($imagePath, dirname(__DIR__) . '/web/images/'.date("Ymd").'/'.$image);
            }
        }
        return $this->render("batch_add", $data);
    }