博客列表 >详解文件上传

详解文件上传

小的博客
小的博客原创
2018年01月15日 15:03:11816浏览

一:文件上传需要注意的是form表单一定要有enctype="multipart/form-date";属性;input标签中的type属性一定是file;

      表单验证是当前页面:

    $_FILES是一个超全局变量可以直接调用:数组内容如下:

    1,$_FILES['myFile']['name']:客户端问价的原名称:本文相当于$_FILES['upload']['name'];

    2,$_FILES['myFile']['type']:文件的MIME类型,需要浏览器提供该信息的支持,例如:image/gif;

    3,$_FILES['myFile']['size']:已上传的文件的大小,单位为字节;

   4,$_FILES['myFile']['tmp_name']:文件被上传后在服务器端储存的临时文件名,一般四系统默认可以在php.ini的           upload_tmp_dir指定,但是putenv()函数设置是不起作用的;

   6,$_FILES['myFile']['error']:和该文件上传相关的错误代码:['error']是在php4.2.0版本中增加的,

    UPLOAD_ERR_OK=0;没有发生错误,文件上传成功:

   UPLOAD_ERR_INI_SIZE=1;上传文件超过了php.ini中upload_max_filesize选项限制的值

  UPLOAD_ERR_FORM_SIZE=2;上传文件的大小超过了html表单中MAX_FILE_SIZE选项的值

  UPLOAD_ERR_PARTIAL=3;文件只有部分被上传;

 UPLOAD_ERR_NO_FILE=4;没有文件被上传,值为5 上传文件大小为零;

QQ截图20180115143731.png

<?php
    header('Content-Type:text/html;charset=utf-8');
    /*php.inc*1,file_uploads=true;允许上传文件:
    *2,max_input_time=30;允许脚本最长运行时间
    *3,post_max_size=8M;允许脚本最长运行时间
    *4,upload_max_filesize=2M;
    允许上传的文件大小
    *5,upload_time_dir=c:;文件的临时目录,mac/linux不用设置*/
/*上传文件的所有信息都会保存到超全局变量
*/
//1,检测是否提交了表单
    if($_SERVER['REQUEST_METHOD']=='POST'){ 
    //2,检测是否上传了文件 
    if($_FILES['upload']){  
      //3,设置允许上传的文件类型 放在数组$allowed中 
    $allowed=['image/jpeg','image/png','image/JPG','image/X-PNG','image/PNG','image/x-png'];  
    //4,检测用户上传的文件类型是不是在允许的类型列表中  
    if(in_array($_FILES['upload']['type'],$allowed)){   
    //5,创建一个临时目录   
      $temFile=$_FILES['upload']['tmp_name'];   
   //6,将文件从临时目录转移到目标目录   
     if(move_uploaded_file($temFile,__DIR__ .'/../php/img/'.$_FILES['upload']['name'])){
         echo '<script>alert("文件上传成功")</script>';   
     }else{    
          echo '<script>alert("文件上传失败")</script>';   
     }  
   }else{  
         echo '<script style="color:red">上传的文件类型不允许</script>';  
    } 
 } 
     if($_FILES['upload']['error']>0){  
        switch($_FILES['upload']['error']){  
          case 1:   
          echo '<h2 style="color:red">文件上传大小超过了PHP.INI中规定的大小</h2>';   
          break;  
          case 2:   
          echo '<h2 style="color:red">文件大小超过了form表单中规定的大小</h2>';   
          break;   
          case 3:   
          echo '<h4 style="color:red">文件仅上传不完整</h4>';   
          break;   
          case 4:   
          echo '<h4 style="color:red">没有问件被上传</h4>';   
          break;   
          case 6:   
          echo '<h4 style="color:red">没有创建文件的临时文件夹</h4>';   
          break;   
          case 7:   
          echo '<h4 style="color:red">无法写入磁盘</h4>';   
          break;   
          case 8:   
          echo '<h4 style="color:red">文件上传被终止</h4>';   
          break;   
          default:   
          echo '<h4 style="color:red">意外错误请检查后重新上传</h4>';   
          break;  
        }  
        //删除临时文件 :此项可选 
        if(file_exists($temFile) && is_file($temFile)){      
             unlink($temFile);      
            }
            
       }
  }
?>
<!DOCTYPE html>
</html>
  <head>
    <title>文件上传</title>
    <link rel="stylesheet" href="../dist/css/bootstrap.css">
    <script src=" https://code.jquery.com/jquery-3.2.1.min.js">
    </script><script src="../dist/js/bootstrap.js"></script>
    <style>
    *{ padding:0; margin:0;}   
    .box{   height:400px;   width:400px;   background-color:#eee;   margin-top:100px;   padding:0;   position:relative;   }   
    .box-top{    width:400px;    height:50px;    line-height:55px;    background:skyblue;    margin-left:0px;    text-align:center;    font-weight:bold;   }
    </style>
  </head>
 </body>
   <div class="container">  
    <div class="row ">    
     <div class="col-md-4  box col-md-push-4"> 
       <form action="" method="post" enctype="multipart/form-data">  
       <div class="row box-top">
         <h4>文件上传</h4></div>
    <!--1,form标签必须设置enctype=multipart/form-data,允许多种类型数据2,input 标签的type属性必须是file类型-->   
     <div class="row" style="margin-top:20px; text-align:center;">        
      <div class="col-md-10 col-md-push-1">  
        <input type="file" name="upload" >   
         <p style="margin-top:200px">
           <input style="width:300px;" class="btn btn-primary" type="submit" value="上传文件">
         </p>  
        </div>  
      </div>  
     </div>
    </div>
   </div>
  </body>
 </form>
</html>

 

上一条:文件上传和单例模式下一条:19头牛
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议