您的位置:首页 > 编程语言 > PHP开发

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

2013-04-17 17:11 525 查看
最近在学习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的图片便会报错了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐