【发布时间】:2019-04-06 11:26:20
【问题描述】:
我在 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>";
}
}
}
}
我不知道为什么会这样。谁能告诉我原因?
【问题讨论】:
-
该文件是否已存在于服务器上,因此无法上传?名称中带有空格的其他文件是否正确上传?我们需要用于上传处理的代码来提供进一步帮助。
-
@kerbholz 是的。名称中带有空格的其他文件正在正确上传。我已经在帖子中添加了 PHP 代码。