PHP封装 文件上传

<?php
  function check($file, $folder='uploads', $prefix=''){
    # 判断上传目录是否存在
    if(!is_dir(dirname(__FILE__)."/{$folder}")){
        mkdir(dirname(__FILE__)."/{$folder}");
    }

    # 上传文件重命名
    $newName= uniqid($prefix,true).strrchr($file['name'],'.'); 
    $newDir= "{$folder}/".$newName;

    # 文件拓展名验证
    $info= finfo_open(FILEINFO_MIME_TYPE);
    $ext= finfo_file($info, $file['tmp_name']);
    $allow= array('image/jpeg','image/png','image/gif');
    if(!in_array($ext,$allow)){
        return '只能上传 '.implode(' , ',$allow).' 等文件格式';
    }

    # 验证文件大小是否越界
    $fileSize= ini_get('upload_max_filesize');
    if(substr($fileSize, -1, 1)== 'k'){
        $fileSize= (integer)$fileSize* 1024;
    }elseif(substr($fileSize, -1, 1)== 'M'){
        $fileSize= (integer)$fileSize* 1024* 1024;
    }elseif(substr($fileSize, -1, 1)== 'G'){
        $fileSize= (integer)$fileSize* 1024* 1024* 1024;
    }elseif(substr($fileSize, -1, 1)== 'T'){
        $fileSize= (integer)$fileSize* 1024* 1024* 1024* 1024;
    }
    if($file['size']> $fileSize){
        return '文件大小不能超过'.number_format($fileSize/1024, 1).'K';
    }

    # 验证是否是http上传
    if(!is_uploaded_file($file['tmp_name'])){
      return '文件不是HTTP POST上传的<br>';
    }

    # 上传错误码
    if($file['error']> 0){
      switch($file['error']) {
        case 1:
            return '文件大小超过了php.ini中允许的最大值,最大值是:'.ini_get('upload_max_filesize');  
        case 2:
            return '文件大小超过了表单允许的最大值';
        case 3:
            return '只有部分文件上传';
        case 4:
            return '没有文件上传';
        case 6:
            return '找不到临时文件';
        case 7:
            return '文件写入失败'; 
        default:
            return '未知错误';
      }
    }

    # 文件上传
    if(move_uploaded_file($file['tmp_name'], $newDir)){
      return "上传成功";
    }
  }

  if(!empty($_POST)) {
    echo check($_FILES['userfile']);
  }
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文件上传</title>
</head>
<body>
    <form action="upload.php" enctype="multipart/form-data" method="post">
        <input type="hidden" name="MAX_FILE_SIZE" value="30000000">
        选择文件:<input type="file" name="userfile">
        <input type="submit" value="上传文件">
    </form>
</body>
</html>
原文地址:https://www.cnblogs.com/SharkJiao/p/14023323.html