php综合优化文件上传案例代码

[复制链接]
查看1612 | 回复0 | 2020-9-27 16:47 | 显示全部楼层 |阅读模式
php综合优化文件上传案例代码
步骤
第一步:验证是否有误
第二步:验证格式
第三步:验证大小
第四步:验证是否是http上传
第五步:上传实现
  1. <body>
  2. <?php
  3. /**
  4. *验证错误
  5. *如果有错,就返回错误,如果没错,就返回null
  6. */
  7. function check($file) {
  8.         //1:验证是否有误
  9.         if($file['error']!=0){
  10.                 switch($file['error']) {
  11.                         case 1:
  12.                                 return '文件大小超过了php.ini中允许的最大值,最大值是:'.ini_get('upload_max_filesize');
  13.                         case 2:
  14.                                 return '文件大小超过了表单允许的最大值';
  15.                         case 3:
  16.                                 return '只有部分文件上传';
  17.                         case 4:
  18.                                 return '没有文件上传';
  19.                         case 6:
  20.                                 return '找不到临时文件';
  21.                         case 7:
  22.                                 return '文件写入失败';
  23.                         default:
  24.                                 return '未知错误';
  25.                 }
  26.         }
  27.         //2、验证格式
  28.         $info=finfo_open(FILEINFO_MIME_TYPE);
  29.         $mime=finfo_file($info,$file['tmp_name']);
  30.         $allow=array('image/jpeg','image/png','image/gif');        //允许的类别
  31.         if(!in_array($mime,$allow)){
  32.                 return '只能上传'.implode(',',$allow).'格式';
  33.         }
  34.         //3、验证大小
  35.         $size=123456789;
  36.         if($file['size']>$size){
  37.                 return '文件大小不能超过'.number_format($size/1024,1).'K';
  38.         }
  39.         //4、验证是否是http上传
  40.         if(!is_uploaded_file($file['tmp_name']))
  41.                 return '文件不是HTTP POST上传的<br>';

  42.         return null;  //没有错误
  43. }

  44. //表单提交
  45. if(!empty($_POST)) {
  46.         //上传文件过程中有错误就显示错误
  47.         if($error=check($_FILES['face'])){
  48.                 echo $error;
  49.         }else{
  50.                 //文件上传,上传的文件保存到当天的文件夹中
  51.                 $foldername=date('Y-m-d');                //文件夹名称
  52.                 $folderpath="./uploads/{$foldername}";        //文件夹路径
  53.                 if(!is_dir($folderpath))
  54.                         mkdir($folderpath);
  55.                 $filename=uniqid('',true).strrchr($_FILES['face']['name'],'.');        //文件名
  56.                 $filepath="$folderpath/$filename";        //文件路径
  57.                 if(move_uploaded_file($_FILES['face']['tmp_name'],$filepath))
  58.                         echo "上传成功,路径是:{$foldername}/{$filename}";
  59.                 else
  60.                         echo '上传失败<br>';
  61.         }

  62. }
  63. ?>
  64. <form method="post" action="" enctype='multipart/form-data'>
  65.         <input type="file" name="face">
  66.         <input type="submit" name="button" value="上传">
  67. </form>
  68. </body>
复制代码
运行结果

php综合优化文件上传案例代码

php综合优化文件上传案例代码

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

UID
1
贡献
387
丢币
38902
主题
4607
回帖
116
注册时间
2018-9-25
最后登录
2024-4-16