我正在尝试向内部公司票务系统添加文件上传功能。该代码适用于实际上传。我遇到的问题是,如果没有文件,代码仍然会执行。我尝试了很多东西,从使用 $_FILES 错误编码到添加选择菜单来选择是否要添加文件,但代码仍然运行。
它是这样工作的:
- 票务信息被处理并输入 DB = 日期、票务信息、电子邮件字符串等
- 然后应验证和上传文件,并将其移至新文件夹(命名为票号)
- 文件名和目录路径被添加到数据库中。
- 所有信息都会传递到通知电子邮件,然后发送出去。
当此脚本运行时,如果没有文件,则创建数据库条目,并将信息添加到电子邮件中,但它链接到不存在的目录。
有趣的花絮:创建新目录的代码在没有文件的情况下不会执行,这是正确的操作。令人困惑的是它在同一个代码块中。
我花了一天半的时间试图解决这个问题,但没有解决。任何帮助是极大的赞赏。
//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;
}
}
}
}