PHP - 访问表单提交的文件以进行验证

时间:2016-12-13 11:58:49

标签: php html forms validation post

我一直在使用$ _POST进行表单验证,用于文本输入。现在我必须通过HTML type ='文件'来验证上传的文件。形式。我通过$ _POST或$ _FILES访问它们时遇到问题。有没有不同的方法来做到这一点?我需要获取文件,以便我可以使用getimagesize()或mime_content_type()

检查MIME类型

以下是我表格中的相关内容:

<form action='submission.php' method='POST'>
    <p>Upload photo of professor</p>
    <input type="file" name="pic" accept="image/*>      
    <p>Upload video of professor</p>
    <input type="file" name="video" accept="video/*">
    <p><input type="submit" onclick="validate()"></p>
</form>
如果我可以获取文件,那么submit.php应该调用验证函数来检查MIME类型是否为image。

function validateimage(&$errors, $field_list, $field_name, $pattern) {
    if (isset($field_list[$field_name])) {
        if (!preg_match($pattern, mime_content_type($field_list[$field_name]))) {
            $errors[$field_name] = 'Please upload an image file';
        }
    } else {
        $errors[$field_name] = 'Required field';
    }
}

enctype="multipart/form-data"添加到我的字段并将$ field_list设置为$ _FILES后,它几乎可以正常工作。但是,似乎isset($_FILES['pic'])始终为真,因为当我尝试提交时没有上传,我收到此警告:

validateimage($errors, $_FILES, 'pic', '/^image/i');

  

警告:mime_content_type():第36行/ Applications / XAMPP / xamppfiles / htdocs / cs4ww3 / Assignment 3 / validate.inc.php中的空文件名或路径

1 个答案:

答案 0 :(得分:1)

为了使用提交的文件填充$_FILES,您需要在表单中将enctype attr设置为multipart/form-data

<form action='submission.php' method='POST' enctype="multipart/form-data">

   ...

</form>