输入类型文件未上传名称为test(copy).csv的文件

时间:2018-11-02 08:09:22

标签: php html forms csv input

我已经在PHP PDO和MySQL中创建了一个导入/导出(CSV)应用程序。 一切正常。 但是当我尝试导入文件名为FILENAME(copy).csv的文件时,它没有被上传。我认为表格不是只提交。并且如果我导入文件名为FILENAME.csv的文件,则工作正常。

这是我的代码:

HTML:

<form class="form-horizontal" action="import.php" method="post" name="frmCSVImport" id="frmCSVImport" enctype="multipart/form-data">
     <div class="input-row">
        <input type="file" name="file" id="file">
        <input type="submit" id="submit" name="import" class="btn-submit btn btn-primary" value="Import">
     </div>
</form>

PHP(import.php):

if (isset($_POST["import"])) {

$fileName = $_FILES["file"]["tmp_name"];

if ($_FILES["file"]["size"] > 0) {

    $file = fopen($fileName, "r");
    $flag = true;

    while (($column = fgetcsv($file, 10000, ",")) !== FALSE) {

        if($flag) { $flag = false; continue; }

        $requiredHeaders = array('Name', 'Email', 'Event_name'); //headers we expect

        $f = fopen($fileName, 'r');
        $firstLine = fgets($f); //get first line of csv file
        fclose($f);

        $foundHeaders = str_getcsv(trim($firstLine), ',', '"'); //parse to array

        if ($foundHeaders !== $requiredHeaders) {
        echo 'Headers do not match: '.implode(', ', $foundHeaders);
        die();
        }else
        {


            echo $name = $column[0]."<br>";
            echo $email = $column[1]."<br>";
            echo $event_name = $column[2]."<br>";

        }
    }
}

}

我不知道为什么会这样。谁能告诉我原因?

1 个答案:

答案 0 :(得分:0)

对不起,我下面是用于验证csv文件名的脚本。

<script type="text/javascript">
$(document).ready(function() {
    $("#frmCSVImport").on("submit", function () {

        $("#response").attr("class", "");
        $("#response").html("");
        var fileType = ".csv";
        var regex = new RegExp("([a-zA-Z0-9\s_\\.\-:])+(" + fileType + ")$");
        if (!regex.test($("#file").val().toLowerCase())) {
                $("#response").addClass("error");
                $("#response").addClass("display-block");
            $("#response").html("Invalid File. Upload : <b>" + fileType + "</b> Files.");
            return false;
        }
        return true;
    });

});
</script>

我删除了该代码,它开始工作。明显。 :D 对不起大家。我的坏事。