【发布时间】:2011-09-21 17:55:50
【问题描述】:
这个问题已经被问过好几次了,但事实证明我遇到的所有答案都是错误的。
我在验证文件是否为 CSV 时遇到问题。用户上传文件,应用程序会检查 fgetcsv 是否正常工作,以确保它是 CSV 而不是 Excel 文件或其他文件。这是我通过 Google 找到的传统答案。
例如:
if ($form->file->receive()) {
$fileName = $form->file->getFileName();
$handle = fopen($fileName, 'r'); // or 'w', 'a'
if (fgetcsv($handle)) {
die('sos yer face');
}
if ($PHPExcelReader->canRead($fileName)) {
die('that\'s what she said');
}
}
上面发生的事情是'sos yer face',因为如果你的句柄来自 fopen($fileName, 'r'),只要有文件要读取,fgetcsv 就会验证为真,无论你给它什么;并且 fgetcsv 在使用 fopen($fileName, 'w') 或 'a' 时始终为 false,因为指针将在 EOF 处启动。这是根据 php.net 文档。
也许我说的很荒谬,我只是没有意识到。任何人都可以请修复我的大脑。
【问题讨论】:
-
调试错误消息的专业精神的光辉典范。
-
谢天谢地,这只是我学习乐趣的模型。在商业环境中这样做之前,我会三思而后行,可能
标签: php validation csv