数组中允许空文件上传

问题描述 投票:0回答:1

我正在收集用户的详细信息,包括将音频文件上传到 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 语句,但不起作用

php
1个回答
0
投票

您必须首先获取上传文件的扩展名。将您的代码编写为


    $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.";
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.