问答详情
源自:2-3 PHP单文件上传函数的封装

函数错误,实在找不到问题。求帮助 ~

<?php

//$fileInfo=$_FILES['myFile'];

function uploadFile($fileInfo,$maxSize=2097152,$uploadPath='uploads',$flag=true,$allowExt=array('jpeg','jpg','gif','png')){

//判断错误号

if($fileInfo['error']>0){

switch ($fileInfo['error']) {

case 1:

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

break;

case 2:

$mes= '超过了表单MAX_FILE_SIZE的限制大小';

break;

case 3:

$mes= '文件部分被上传';

break;

case 4:

$mes= '没有选择上传文件';

break;

case 6:

$mes= '没有找到临时目录';

break;

case 7:

case 8:

$mes= '系统错误';

break;


}

exit($mes);

}


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

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

//检测上传文件的类型

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

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

}

//$maxSize=2097152;//2M


//检测上传文件的类型是否符合规范

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

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

}


//检测图片是否为真实类型

//$flag=true;

if ($flag) {

if(!getimagesize($fileInfo['tmp_name'])){

exit('不是真实图片类型');

}

}

//检测文件是否是通过HTTP POST方式上传上来


if(!is_unloaded_file($fileInfo['tmp_name'])){

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

}


//$uploadPath='uploads';

//检测目录是否存在

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

$destination=$uploadPath.''.$uniName;

if(!file_exists($uploadPath)){

mkdir($uploadPath,0777,true);

chmod($uploadPath,0777);

}

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

exit('移动文件失败');

}


//echo '文件上传成功';

//return  路径名 文件 大小 类型 数组

// return array(

// 'newName'=>$destination,

// 'size'=>fileInfo['size'],

// 'type'=>fileInfo['type']

// )

return $destination;

}

提问者:莫忘初心才能始终 2018-09-22 05:11

个回答

  • 莫忘初心才能始终
    2018-09-23 21:30:45

    老哥谢谢了,我没想到真的低级的错误

  • Wingrez
    2018-09-23 12:54:49

    if(!is_unloaded_file($fileInfo['tmp_name'])){

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

    }

    //此处错误,is_uploaded_file()