码迷,mamicode.com
首页 > Web开发 > 详细

101)PHP,多文件上传

时间:2017-08-24 13:31:05      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:pre   item   some   param   err   年月日   返回   随机   ima   

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

 

    技术分享

 

    

  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 }

 

多文件上传的样子:

 

    技术分享

    技术分享

 

101)PHP,多文件上传

标签:pre   item   some   param   err   年月日   返回   随机   ima   

原文地址:http://www.cnblogs.com/xiaoyoucai/p/7422419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!