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);
???}
php解析csv文件
原文地址:https://www.cnblogs.com/lsbaiwyl/p/9026065.html