我一直在使用$ _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中的空文件名或路径
答案 0 :(得分:1)
为了使用提交的文件填充$_FILES
,您需要在表单中将enctype
attr设置为multipart/form-data
:
<form action='submission.php' method='POST' enctype="multipart/form-data">
...
</form>