我正在收集用户的详细信息,包括将音频文件上传到 MySQL 数据库的选项,但是我的 in_array 不允许上传表单中的其他数据,除非附加了文件。我想知道如果用户不选择附加文件,如何修改此代码以允许空上传字段,因为现在如果没有附加文件,则会出现文件扩展名错误。非常感谢!!
// the physical file on a temporary uploads directory on the server
$file = $_FILES['myfile']['tmp_name'];
$size = $_FILES['myfile']['size'];
if (!in_array($extension, ['zip', 'pdf', 'docx', 'mp3'])) {
echo "You file extension must be .zip, .pdf or .docx";
} elseif ($_FILES['myfile']['size'] > 999000000) { // file shouldn't be larger than 1Megabyte
echo "File too large!";
} else {
// move the uploaded (temporary) file to the specified destination
if (move_uploaded_file($file, $destination)) {
$sql = "INSERT INTO story (name, size, first_name, initial, service, story_text, downloads) VALUES ('$filename', '$size', '$first_name', '$initial', '$service', '$story_text', 0)";
if (mysqli_query($conn, $sql)) {
echo "File uploaded successfully";
}
} else {
echo "Failed to upload file.";
}
}
}
尝试为空 myfile 添加另一个 if 语句,但不起作用
您必须首先获取上传文件的扩展名。将您的代码编写为
$file = $_FILES['myfile']['tmp_name'];
$size = $_FILES['myfile']['size'];
$name = $_FILES["myfile"]["name"];
$extension = end((explode(".", $name)));
if (!in_array($extension, ['zip', 'pdf', 'docx', 'mp3'])) {
echo "You file extension must be .zip, .pdf or .docx";
} elseif ($_FILES['myfile']['size'] > 999000000) { // file shouldn't be larger than 1Megabyte
echo "File too large!";
} else {
// move the uploaded (temporary) file to the specified destination
if (move_uploaded_file($file, $destination)) {
$sql = "INSERT INTO story (name, size, first_name, initial, service, story_text, downloads) VALUES ('$filename', '$size', '$first_name', '$initial', '$service', '$story_text', 0)";
if (mysqli_query($conn, $sql)) {
echo "File uploaded successfully";
}
} else {
echo "Failed to upload file.";
}
}
}