PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步

2019-05-02 05:46:36王振洲

通过表单隐藏域限制上传文件的最大值

<input type="hidden" name="MAX_FILE_SIZE" value="字节数">

通过accept属性限制上传文件的类型

<input type="file" name="myfile" accept="文件的MIME类型">

《服务器端限制》

1.限制上传文件大小

2.限制上传文件类型

3.检测是否为真实图片类型

4.检测是否为HTTP POST方式上传

5.判断服务器上存储的文件夹在不在

6.防止重名产生覆盖

<?php
$fileinfo=$_FILES["myfile"];
$maxsize=2097152;     //写最大的字节数,自己算
$allowext=array('jpeg','jpg','pnd','gif','wbmp');  //定义一下允许的上传文件类型
//1.判断错误号
if($fileinfo['error']==0)
{
  //1.判断上传文件大小
if($fileinfo['size']>$maxsize)
  {
    exit('上传文件过大');
    }
 //2.判断上传文件类型是不是在规定类型中
$ext=strtolower(end(explode(',',$fileinfo['name'])));//截取上传文件扩展名
  if(!in_array($ext,$allowext))  // 判断上传文件的扩展名是不是在定义类型中
  {
     exit('非法文件类型');  
    }
 //3.判断文件是否是通过HTTP POST方式上传上来的
if(!is_uploaded_file($fileinfo['tmp_name']))
  {
    exit('文件不是通过HTTP POST方式上传上来的');
    }
 //4.检测是否为真实的图片类型,而不是认为改动的
$flag=true;
  if($flag)
  {
    if(!getimagesize($fileinfo['tmp_name']))
    {
      echo "不是真实的图片类型";
      }
    }
  $path='uploads'; //服务器上存储文件的文件名
//5.判断服务器上存储的文件夹在不在
if(!file_exists($path))
  {
    mkdir($path,0777,true);//不存在就创建一个目录
    chmod($path,0777);//加一个权限
    }
 //6.确保文件名唯一,防止重名产生覆盖
$uniname=md5(uniqid(microtime(true),true)).'.'.$ext;  //通过MD5加密等措施给文件名取名
  $destination=$path.'/'.$uniname;
  if(move_uploaded_file($fileinfo['tmp_name'],$destination)) //上传文件
  {
    echo "文件上传成功";
    }else
    {
      echo "文件上传失败";
      }
  }else
  {
//匹配错误信息
  switch($error)
    {
      case 1:
      echo "上传文件超过了PHP配置文件中upload_max_filesize选项的值";
      break;
      case 2:
      echo "超过了表单MAX_FILE_SIZE的限制大小";
      break;
      case 3:
      echo "文件部分被上传";
      break;
      case 4:
      echo "没有选择上传文件";
      break;
      case 6:
      echo "没有找到临时目录";
      break;
      case 7:
      case 8:
      echo "系统错误";
      break;
      }
    }
?>

5.完整的上传文件步骤

第一步:表单页内容

<body>
 <form action="doaction.php" method="post" enctype="multipart/form-data">
//通过表单隐藏域限制上传文件的最大值
<input type="hidden" name="MAX_FILE_SIZE" value="字节数">
//通过accept属性限制上传文件的类型
<input type="file" name="myfile" accept="文件的MIME类型">
</form>
 </body>								 
			 
相关文章 大家在看