我正在尝试向内部公司售票系统添加文件上传功能。该代码适用于实际上传。我遇到的问题是,如果没有文件,代码仍然执行。我尝试了很多东西,从使用$ _FILES错误编码到添加选择菜单来选择是否要添加文件,但代码仍在运行。
它的工作原理如下:
当此脚本运行时,如果没有文件,则会生成数据库条目,并将信息添加到电子邮件中,但它会链接到不存在的目录。
有趣的花絮:没有文件,新目录的代码不会执行,这是正确的操作。令人困惑的是它在同一块代码中。
我花了一天半的时间试图在没有解决方案的情况下解决这个问题。非常感谢任何帮助。
//fileUpload
$fixedFileName = "";
$fileProcessed = 0;
if($_POST['yesFile'] == "yes") { //select option in form -
$allowedExts = array("gif", "jpeg", "jpg", "png", "txt", "pdf", "zip", "doc", "docx", "xls", "xlsx", "pcf");
$varForExt = explode(".", $_FILES["file"]["name"]);
$extension = end($varForExt);
if($_FILES["file"]["size"] < 20000000 && in_array($extension, $allowedExts)) {
if($_FILES["file"]["error"] > 0) {
//echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
$fixedFileName = print_r($_FILES);
} else {
$fixedFileName = trim(str_replace(' ','_', $_FILES["file"]["name"]));
$dirToMake = '/var/www/html/eis/uploads/ESIG/';
$dirToMake .= $_SESSION['lastRID'].'/';
mkdir($dirToMake);
if(move_uploaded_file($_FILES["file"]["tmp_name"], $dirToMake.$fixedFileName)) {
//insert filepath/file into sql
$fileProcessed = 1;
}
}
}
}
答案 0 :(得分:1)
尝试启用错误报告error_reporting(E_ALL); ini_set("display_errors", "on");
我怀疑文件数组是空的,并且php看到未定义的$_FILES["file"]["size"]
为0,它通过了测试。
尝试将isset($_FILES["file"])
添加到您的第一个测试
if(isset($_FILES["file"]) && $_FILES["file"]["size"] < 20000000 && in_array($extension, $allowedExts)) {