问答详情
源自:2-2 PHP文件上传案例实战之服务器端限制详解

为什么我传jpg格式图片,显示说是非法文件类型

<?php

header('content-type:text/html;charset=gbk');

$fileTnfo=$_FILES['myFile'];

$maxSize=2097152;

$allowExt=array('jpeg','jpg','png','gif','wbmp');

//判断错误号

if($fileTnfo['error']==0){

//判断上传文件的大小

if($fileTnfo['size']>$maxSize){

exit('上传文件过大');

}

$ext=pathinfo($fileTnfo['name'],PATHINFO_EXTENSION);

if(in_array($ext, $allowExt)){

exit('非法文件类型');

}

//判断文件是否是通过HTTP POST方式上传来的

if(!is_uploaded_file($fileTnfo['tmp_name'])){

exit('文件不是通过HTTP POST方式上传来的');

}

//检测是否为真实的图片

$path='uploads';

if(!file_exists($path)){

mkdir($path,0777,true);

chmod($path, 0777);

}

//确保文件名唯一,防止重名产生覆盖

$uniName=md5(uniqid(microtime(true),true)).'.'.$ext;

//echo $uniName;exit;

$destination=$path.'/'.$uniName;

if(@move_uploaded_file($fileTnfo['tmp_name'], $destination)){

echo'文件上传成功';

}else{

echo'文件上传失败';

}

}else{

//匹配错误信息

switch($error){

case 1:

echo '上传文件超过了PHP配置文件中的upload_max_filesize选项的值';

break;

case 2 :

echo '超过了表单MAX_FILES_SIZE限制的大小';

break;

case 3:

echo '文件被部分上传';

break;

case 4:

echo '没有选择上传文件';

break;

case 6:

echo '没有找到临时目录';

break;

case 7:

case 8:

echo '系统错误';

break;


}

}


提问者:慕粉4027178 2016-08-26 20:18

个回答

  • 唱跳rap篮球_
    2016-08-27 20:38:35

    if(in_array($ext, $allowExt)){

    exit('非法文件类型');

    }

    代码错误,你表示的是如果扩展名在你给定的数组就退出执行并且打印 ‘非法文件类型’。应该是

    if(!in_array($ext, $allowExt)){

    exit('非法文件类型');

    }

    表示不在给定的数组退出并且打印