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

PHP解析.csv文件_PHP csv文件读取导出

程序员文章站 2021-12-03 07:56:14
...

本文章是对 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);
}