php文件上传MAX_FILE_SIZE不起作用的问题

最近在学习php的文件上传,学完后自己试着联系下,文件类型大小的判断都没有问题,最后也成功上传了,但是$_FILES['pic']['error']==2时怎么都搞不出来,弄得老大郁闷。刚开始代码如下:

HTML页面:

<form action='upload.php' method="post" enctype="multipart/form-data">

图片:<input type="file" name='pic'/>
<input type="hidden" name="MAX_FILE_SIZE" value="100000"/>
<input type="submit" value='上传'/>
</form>

PHP页面:

<?php
$maxsize=1024000;        //上传文件最大值为1M
$types=array("jpg","png","gif");
$name=$_FILES['pic']["name"];
$filepath="./uploads";
//配置上传目录
if(!file_exists($filepath)){
    mkdir($filepath);
}
//1判断错误类型
if($_FILES['pic']['error']>0){
switch($_FILES['pic']['error']){
    
    case 1:
    $error='上传文件超过了php.ini的upload_max_filesize值的大小';
    break;
    case 2:
    $error='上传文件超过了HTML表单的MAX_FILE_SIZE值的大小';
    break;
    case 3:
    $error='只有部分文件被上传';
    break;
    case 4:
    $error='没有文件被上传';
    break;
    default:
    $error='未知错误';
    
    }
    echo $error;
    exit;
}
//2判断文件类型
$name=$_FILES['pic']["name"];
$start=strrpos($name,'.')+1;
$filetype=substr($name,$start);
if(!in_array($filetype,$types)){
    die('文件类型不正确');
}
//3判断文件大小
if($_FILES['pic']['size']>$maxsize){
    die('文件过大');    
}
//4对上传文件重命名
$newfilename=date("YmdHis").rand(100,999).".".$filetype;

//5移动文件
$newfile=rtrim($filepath,'/')."/".$newfilename;
if(is_uploaded_file($_FILES['pic']['tmp_name'])){
    if(move_uploaded_file($_FILES['pic']['tmp_name'],$newfile)){
        echo '上传成功';
    }else{
        echo '上传失败';    
    }
    
}else{
    die("不是一个上传文件");    
}

?>

最后和别人写的代码对比了下,发现问题很简单,必需把<input type="hidden" name="MAX_FILE_SIZE" value="100000"/>  移到   图片:<input type="file" name='pic'/>才可以,再上传超过100k的图片便会报错了。

原文地址:https://www.cnblogs.com/kongxs/p/3026642.html