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);
}