首页 > 解决方案 > PHP 无法识别 CSV 文件

问题描述

我正在使用表单上传 CSV

<form role="form" action="#" method="post" style="color: black;">
            
    <input type="file" name="file" id="file"><br/>
    <input type="submit" value="submit">
</form>

将其处理到数据库的代码

<?php
if ($_SERVER['REQUEST_METHOD'] = $_POST) {
    echo $filename=$_FILES["file"]["name"];
    $ext=substr($filename,strrpos($filename,"."),(strlen($filename)-strrpos($filename,".")));
     
    //we check,file must be have csv extention
    if($ext=="csv")
    {
      $file = fopen($filename, "r");
             while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE)
             {
                $gender = $emapData[2];
                if ($gender = "Male") {
                    $gender = 1;
                } else {
                    $gender = 2;
                }
                $status = $emapData[3];
                if ($status = "Unclaimed") {
                    $status = 1;
                } else {
                    $status = 2;
                }

                $sql = "INSERT into angels(id,age,gender,status,giftername,gifteremail) values('$emapData[0]','$emapData[1]','$gender','$status','$emapData[4]','$emapData[5]')";
                mysqli_query($db_conn, $sql);
             }
             fclose($file);
             echo "CSV File has been successfully Imported.";
    }
    else {
        echo "Error: Please Upload only CSV File";
    }

}

?>

我正在上传 .csv 文件,但我一直点击“错误:请仅上传 CSV 文件”

标签: phpmysqlcsv

解决方案


您应该检查“.csv”,因为抓取扩展名的行也会复制点。更好的方法是使用pathinfo(),并使检查大小写不敏感。

<?php

$filename = 'abc.csv';

if (strtolower(pathinfo($filename)['extension']) === 'csv')
{
    // Your csv stuff.
    echo "Doing csv stuff.\n";
}
else
    exit('Error: Please Upload only CSV File');

推荐阅读