十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你说的10M应该是php.ini里设置的上传文件大小限制,而你这个switch判断是基于表单上传文件大小来判断的,两者毫无相关!
成都创新互联公司主营鸡西梨树网站建设的网络公司,主营网站建设方案,重庆APP开发,鸡西梨树h5小程序开发搭建,鸡西梨树网站营销推广欢迎鸡西梨树等地区企业咨询
一、超过10M,在php底层处理请求时就直接报错了,根本执行不到你switch的地方,所以报错是非预期的
二、超过2M,php能正常执行,所以会按照你switch来报错
这里,你要搞清楚php的上传文件大小限制跟form表单上传文件大小限制的关系
if(!$_FILES['imgfile']){
$_FILES是一个数组
而,$_FILES是不可能为空的,也不可能为假(false)的
为什么,因为,如果上传的数据正确,那他就有文件大小、文件类型、文件名称、临时文件名称等信息
如果上传的数据不正确,或者受到php.ini的限制,那他也不会这样返回,他的error值是存在的,而且是大于0的数字!
所以个人 认为 if(!$_FILES['imgfile']){ 不恰当
其他的没有仔细看!
个人看法,仅供参考!
失败的原因,可能有两个:
一个正如你所说的单张图片超过了服务器设定的能上传的最大值
另一个原因可能是php执行时间超长了,最好能加上set_time_limit(0);这样时间再长也不会超时
从这两方找解决办法:
第一个建议修改php的配置文件
if( $submit )改为if($_POST['submit'])
或者
在php.ini中设置register_globals = On,在重启apache或者IIS就可以了
register_globals叫做自动全局变量,服务器会把$_GET,$_POST,$_COOKIE等中的值自动加到全局变量里,例如
URL是a.php?c1=2c2=3
$_GET是这样的数组 array('c1'=2, 'c2'=3)
自动加入全局变量:$c1和$c2他们的值分别是2和3.
默认的顺序是GPC即$_GET,$_POST,$_COOKIE也就是$_POST里如果同时也有c1,$c1这个全局变量的值就不是$_GET里的2,而是$_POST里的值了
by the way
我猜你看的参考书应该是国产的,奉劝一句,还是看翻译过来的国外的教材吧,不然会耽误你的。