我有这个脚本用于图像验证。例如,对于500 kb或1.5 mb的图像,可以正常工作,但是如果我尝试使用4mb或6的图像,则给出错误格式无效而不是“尺寸大”。为什么呢?
$imageData = @getimagesize($_FILES["userfile"]["tmp_name"]);
if($imageData === FALSE || !($imageData[2] == IMAGETYPE_GIF || $imageData[2] == IMAGETYPE_JPEG || $imageData[2] == IMAGETYPE_PNG)) {
echo "<li>Invalid format</li>";
die();
}
else {
if($_FILES["userfile"]["size"] >= 2000000) {
echo "<li>The size large</li>";
die();
}
else {
//mystuff
}
谢谢
答案 0 :(得分:1)
您没有检查文件上传是否成功。 PHP有一个内存限制,适用于上传的文件,你的“大”图像很可能超过这个限制。您应该检查上传内容:
if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK) {
... uploaded ok ...
} else
echo "File upload failed on 'userfile' with error: " . $_FILES['userfile']['error'];
}
答案 1 :(得分:1)
您可能还想检查php.ini中的post_max_size和upload_max_filesize。如果您尝试上传的文件太大,我相信不会填充_FILES数组。
答案 2 :(得分:0)
使用$ _FILES ['size'] .. getimagesize对于大图像来说非常慢