【发布时间】:2014-03-03 18:52:00
【问题描述】:
我在表单验证方面遇到问题。当我没有选择要上传的文件时,我仍然会收到一个错误,提示只有 png 图像有效。我认为如果没有选择文件,$_FILES 数组将为空。
我做错了什么?
我用于文件上传的 html 表单摘录如下所示:
<label for="file">Filename
<span class="small">Upload image</span>
</label>
<input type="file" name="file" id="file">
我的 php 处理如下:
$submitted_file = $_FILES['file'];
if(isset($submitted_file)) {
// verify the file PNG only
$fileType = exif_imagetype($submitted_file["tmp_name"]);
$allowed = array(IMAGETYPE_PNG);
$max_filesize = 512000;
if (!in_array($fileType, $allowed)) {
$proceed = false;
$arrErrors['submitted_file_ext'] = 'Please upload .png images only.';
}
}
【问题讨论】:
-
var_dump($_FILES);并看到即使您不加载文件,$_FILES数组仍然设置。 -
您正在查看 isset($submitted_file),您将其设置为等于 $_FILES["file"]。所以即使它是空的,它也会被设置。您应该使用 empty() 函数或 if($submitted_file=="") 之类的函数检查它是否为空
-
我做了一个 var_dump 并得到了 array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"] => string(0) "" ["error"]=> string(1) "4" ["size"]=> string(1) "0" }
-
如果变量等于
null-isset返回false,顺便说一句
标签: php html forms file upload