• 101)PHP,多文件上传


    就是在之前的单文件上传的基础上加了一个函数:

        

        

      1 <?php
      2     /**
      3      * 上传函数
      4      * @param $tmp_file  $_FILES的五个信息,比如upload($_FILES('mingzi')
      5      * $_FILES里面的名字是你的对应的html代码中的上传文件的那个name
      6      * @return bool  失败返回false,成功就是true
      7      */
      8     $tmp_file=$_FILES['picture'];
      9     function upload($tmp_file){
     10     
     11         /**
     12          * 是否存在错误
     13          */
     14         
     15         if($tmp_file['error']!=0){
     16             echo '文件上传错误';
     17             return false;
     18         }
     19         /**
     20          * 尺寸,
     21          * 这个函数自己定的,但是应该是初始化设定的,就是这个值是变化的,不是一个固定的值。
     22          */
     23       
     24         $max_size=1024*1024;//自己设定的最大尺寸
     25         if($tmp_file['size']>$max_size){
     26             echo "文件过大";
     27             return false;
     28         }
     29         /**
     30          * 验证后缀名,
     31          * 用验证后缀和MIME方法
     32          */
     33                 //首先是验证后缀名
     34         $tmp_file_zhui=strrchr($tmp_file['name'],'.') ;
     35                 //strrchr函数是来剪切字符串的最后出现.的包括这个.后面的全部截取
     36         //后缀的映射数组,其实就是那个满足条件的后缀表(用关联数组表示)
     37         $tmp_file_zhui_list=array(
     38             '.png','.gif','.jpeg','.jpg'
     39         );
     40         if(!in_array($tmp_file_zhui,$tmp_file_zhui_list)){
     41             echo "文件格式有问题";
     42             return false;
     43         }
     44                 //就是那个$_FILES['type']有一个格式,下面的是对应那个映射表
     45         $tmp_file_zhui_MIMElist=array(
     46             '.png'=>array('image/png','image/x-png'),
     47             '.jpg'=>array('image/jpeg','image/x-pjpeg'),
     48             '.jpeg'=>array('image/jpeg','image/pjpeg'),
     49             '.gif'=>array('image/gif'),
     50         );
     51         $old_list=array();//下面直接用$old_list不行,我觉得这个就是声明,这是自己加的
     52         //得出真正的映射表,因为在我的后缀映射表中,可能不是这四个,一旦发生改动,我的下面的映射关系,我还得自己改,所以,我就用一个foreach,上面有什么后缀,我的下面就给他对应上什么$_FILE['type']格式,然后得到我要的MIME映射表
     53         foreach ($tmp_file_zhui_list as $value){
     54             foreach($tmp_file_zhui_MIMElist[$value] as $key=>$item){
     55 //               var_dump($tmp_file_zhui_MIMElist[$value][$key]);
     56                 $new_MIME_list=array_merge($old_list,(array)$tmp_file_zhui_MIMElist[$value][$key]);
     57                $old_list=$new_MIME_list;
     58             }
     59             
     60         }
     61         //去重
     62         $new_MIME_list=array_unique($new_MIME_list);
     63         
     64         //然后用MIME验证
     65         $phpfinfo=new finfo(FILEINFO_MIME_TYPE);
     66         $f_type=$phpfinfo->file($tmp_file['tmp_name']);
     67         echo $f_type;
     68         if(!in_array($f_type,$new_MIME_list)){
     69             echo "文件格式有误";
     70             return false;
     71         }
     72         //后缀验证完成。
     73         //建立一个文件夹,来存我的临时文件
     74         if(!is_dir('./wangchao')){
     75             mkdir('./wangchao');
     76         }
     77         
     78         $sub_dir_name=date('Y--m-d-H');//截取年月日小时
     79         //unipid是产生一个随机名字,可以试验一下  echo uniqid();
     80         move_uploaded_file($tmp_file['tmp_name'],'./wangchao/'.uniqid('wang_'.$sub_dir_name.'_').$tmp_file_zhui);
     81         return true;
     82     }
     83 upload($tmp_file);
     84 
     85 
     86 /*
     87         基本上的步骤就是:
     88                 ①看$_FILES['error']是否爆出错误
     89                 ②看文件的大小
     90                 ③看文件的格式,分为后缀和MIME验证
     91                 ④创建一个文件夹来存取临时上传文件
     92                 ⑤返回结果
     93 
     94  */
     95 function uploadsome($tmp_files){
     96     foreach($tmp_files as $key=>$value){
     97         $tmp_file['name']=$tmp_files['name'][$key];
     98         $tmp_file['type']=$tmp_files['type'][$key];
     99         $tmp_file['tmp_name']=$tmp_files['tmp_name'][$key];
    100         $tmp_file['error']=$tmp_files['error'][$key];
    101         $tmp_file['size']=$tmp_files['size'][$key];
    102         upload($tmp_file);
    103     }
    104 }

    多文件上传的样子:

        

        

  • 相关阅读:
    Android studio 安装,JDK 出错解决方案
    Struts2 一、 视图转发跳转
    @Transactional 注解说明
    基于Schema的AOP 配置使用详解
    CSS滤镜让图片模糊(毛玻璃效果)实例页面
    Struts 2.3.4.1完整示例
    StudentSchema student实例数据库环境搭建
    network is unreachable 解决方案之一
    Oracle 转换函数
    Oracle检查与安装操作内容
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/7422419.html
Copyright © 2020-2023  润新知