MENU

PHP实现文件上传处理

• April 10, 2019 • Read: 1130 • Web Program

PHP/NO.3

文件上传

enctype="multipart/form-data"//表单from属性

PHP 超全局变量

名称用途
$_GET接受GET方式提交的值
$_POST接受POST方式提交的值
$_FILES接收文件
$_REQUEST请求包括GET和POST
$_COOKIEJS内置
$_SESSION...

多文件上传

multiple="multiple"//input 属性!

PHP移动文件函数

move_uploaded_file($upfile["tmp_name"][0],"./svip/".$suijishu);//让图片以新名字存储到svip目录中

PHP转小写函数

$extName=strtolower($extName)//转小写

判断变量是否在数组中的函数

in_array("jpg",$arr)//判断jpg是否在数组array中返回布尔值

创建目录函数

mkdir("./upload")//新建一个upload的文件目录
file_exists("./upload")//判断是否存在叫upload的目录 返回值为布尔值

接受多文件demo

html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        
        <form action="reg.php" method="post" enctype="multipart/form-data" m>
         上传图片,支持jpg,png:<input type="file"  name="upfile[]" multiple="multiple"/><br>
            <input type="submit" value="确定"/>
        </form>
    </body>
</html>

PHP

<?php
  header("content-type:text/html;charset=utf-8");
   // php 引擎 --》html 
   // 移动临时文件到服务器
   //move_uploaded_file($_FILES["upfiles"]["tmp_name"][0], "./".$_FILES["upfiles"]["name"][0]);
   // 存 允许上传 文件类型
      $extArr = [".jpg",".png",".gif"]; 
      $maxSize = 200*1024;
 
 //1. 判断 有没有选择文件
    if($_FILES["upfiles"]["error"][0] !=4){
        
        // 至少选择一个文件
       
       foreach($_FILES["upfiles"]["error"] as $k=> $v){
           //echo $v."<br>";
           
                 if($v == 0){
                     
                //1.限制类型  截取扩展名
                
                $index = strrpos($_FILES["upfiles"]["name"][$k] , ".");
                
                $extName = substr($_FILES["upfiles"]["name"][$k], $index); //.jpg xxx.PNG
                
                 $extName = strtolower($extName);
                 
                 if(in_array($extName, $extArr)){
                      // 类型 合法
                      
                      // 判断大小
                      
                      if($_FILES["upfiles"]["size"][$k] >$maxSize){
            echo "<span style='color:red'>".$_FILES["upfiles"]["name"][$k]."过大!</span><br>";    
                        
                      }else{
                          // 重命名 
                          
                          $newFileName = time().mt_rand(10000, 99999).$extName;
                        
                        // 移动文件执行上传
                        
                        $path = "./upload/";
                        
                        if(!file_exists($path)){
                            
                            //新建文件
                            
                            mkdir($path);
                            
                        }
                        
        $re= move_uploaded_file($_FILES["upfiles"]["tmp_name"][$k], $path.$newFileName);
                        
                         if($re){
        echo "<span style='color:green'>".$_FILES["upfiles"]["name"][$k]."上传成功!</span><br>";    
                         }else{
        echo "<span style='color:red'>".$_FILES["upfiles"]["name"][$k]."上传失败!</span><br>";    
                         }
                      }
                      
                    
                 }else{
        echo "<span style='color:red'>".$_FILES["upfiles"]["name"][$k]."类型不合法!</span><br>";    
                    
                 }
                 //in_array($needle, $haystack)
                // 正常
                // 限制 格式 、大小 重命名
                 }else{
                     
        echo "<span style='color:red'>".$_FILES["upfiles"]["name"][$k]."有异常!</span><br>";
                 }
        
       }

   
    }else{
        // 没选择文件 
        
        header("location:uplooads.html");
        
    }

字符串处理

substr()  字符串截取
strpos()  匹配第一次出现的字符
strrpos()  匹配最后一次出现的字符
strlen()  字符串长度
str_replace()  字符串截取 全部匹配
    str_replace("a","xxx",$arr)将匹配的值替换为某内容,对象是某变量
    str_ireplace("a","xxx",$arr)不区分大小写
$str[]    取出字符串里的某个字符
$str{}    取出字符串里的某个字符、
$exlode(定义符,变量) 分割变量 以定义符拆分

打乱数组函数

str_shuffle($arr)//打乱数组

自定义函数

  1. 一次封装多次调用;
  2. 减少代码重复率,提高代码复用性。
function xx($filName){
     global $b;//转化为全局变量
}
        全局变量在函数内部不能用!!!!

递归

函数内部调用自身。死循环!
Last Modified: April 18, 2019
Leave a Comment