php部分---单文件上传的封装类

<?php
$fileinfo=$_FILES["myfile"];
function uploadfile($fileinfo,$allowext=array('jpeg','jpg','pnd','gif','wbmp'),$flag=true,$maxsize=2097152){
//判断错误信息
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);
    
}

//判断上传文件类型是不是在规定类型中
    $allowext=array('jpeg','jpg','pnd','gif','wbmp');   //定义一下允许的上传文件类型
    $ext=strtolower(end(explode(',',$fileinfo['name'])));//截取上传文件扩展名
    if(!in_array($ext,$allowext))    // 判断上传文件的扩展名是不是在定义类型中
    {
         exit('非法文件类型');    
        }

//判断上传文件大小
    $maxsize=2097152;         //写最大的字节数,自己算
    if($fileinfo['size']>$maxsize)
    {
        exit('上传文件过大');
        }
        
//判断文件是否是通过HTTP POST方式上传上来的
    if(!is_uploaded_file($fileinfo['tmp_name']))
    {
        exit('文件不是通过HTTP POST方式上传上来的');
        }
        
//检测是否为真实的图片类型,而不是认为改动的
    $flag=true;
    if($flag)
    {
        if(!getimagesize($fileinfo['tmp_name']))
        {
            echo "不是真实的图片类型";
            }
        }
        

//判断服务器上存储的文件夹在不在
$path='uploads';  //服务器上存储文件的文件名
    if(!file_exists($path))
    {
        mkdir($path,0777,true);//不存在就创建一个目录
        chmod($path,0777);//加一个权限
        
        }
$uniname=md5(uniqid(microtime(true),true)).'.'.$ext;   //通过MD5加密等措施给文件名取名,产生唯一文件名
    
    $destination=$path.'/'.$uniname;
    if(!move_uploaded_file($fileinfo['tmp_name'],$destination)) //上传文件
    {
        echo "文件上传失败";
        }
    
    return array(
    
    'newname'=>$destination,
    'size'=>$fileinfo['size'],
    'type'=>$fileinfo['type']
    
    
    );
    
            
}
原文地址:https://www.cnblogs.com/xingyue1988/p/6235337.html