我已经在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>";
}
}
}
}
我不知道为什么会这样。谁能告诉我原因?
答案 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 对不起大家。我的坏事。