单个和多个文件上传代码

  1 <?php
  2 // +----------------------------------------------------------------------
  3 // | EBACERA [ WE CAN DO IT JUST THINK IT ]
  4 // +----------------------------------------------------------------------
  5 // | Copyright (c) 2016 http://www.ebacera.com All rights reserved.
  6 // +----------------------------------------------------------------------
  7 // | Author: 重设人生 <573914456@qq.com>
  8 // +----------------------------------------------------------------------
  9 //单个图片上传
 10 header("Content-type:text/html;charset=utf-8");
 11 $get_type = strtolower($_GET['type']);
 12 $type = isset($get_type) ? $get_type : "single";
 13 //获取上传的文本域
 14 $file_info=$_FILES['file_info'];
 15 
 16 
 17 if (!empty($file_info)) {
 18 
 19     //单图上传
 20     if ($type == "single") {
 21 
 22         $result = uploadFile($file_info); //调用单图上传
 23         show_dump($result);
 24 
 25     } else {
 26 
 27         //多图上传
 28         $file_list=array();
 29         $msg_list=array();
 30         foreach($file_info['name'] as $k=>$v){
 31             $file_list['name']=$v;
 32             $file_list['type']=$file_info['type'][$k];
 33             $file_list['tmp_name']=$file_info['tmp_name'][$k];
 34             $file_list['error']=$file_info['error'][$k];
 35             $file_list['size']=$file_info['size'][$k];
 36             //保存上传返回的信息
 37             $msg_list[$k]= uploadFile($file_list); //调用单图上传
 38         }
 39 
 40 
 41     }
 42 
 43 
 44 }
 45 
 46 
 47 //单图片上传
 48 function uploadFile($file_info)
 49 {
 50 
 51     $file_name = $file_info['name'];//上传的图片名字
 52     $file_type = $file_info['type'];//上传的图片类型
 53     $file_tmp_name = $file_info['tmp_name'];//上传的图片零时文件
 54     $file_error = $file_info['error'];//上传的图片错误类型【0为没有错误】
 55     $file_size = $file_info['size']; //上传的图片大小
 56     //1、判断文件是否错误
 57     if ($file_error != 0) {
 58         echo "上传文件存在错误!";
 59         echo $file_error;
 60         return false;
 61     }
 62 
 63 
 64     //2、判断文件类型是否错误
 65     $ext_list = array('.jpg', '.jpeg', '.png', '.gif');
 66     $ext = strrchr($file_name, '.');//截取文件名的后缀
 67     if (!in_array($ext$ext_list)) {
 68         // 后缀名非法
 69         echo '文件类型非法';
 70         return false;
 71     }
 72     //获取文件类型
 73     $type_list = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');
 74     if (!in_array($file_type$type_list)) {
 75         // 文件类型非法
 76         echo '文件类型非法';
 77         return false;
 78     }
 79 
 80 
 81     //3、判断文件大小
 82     $max_size = 1024 * 2014;//1M
 83     if ($file_size > $max_size) {
 84         echo "文件大小不能超过 $max_size 【1M】";
 85         return false;
 86     }
 87 
 88 
 89     //4、生成要保存的文件地址
 90     $upload_path = "./upload/";//图片目录
 91     $sub_dir = date('YmdH') . "/";
 92     if (!is_dir($upload_path . $sub_dir)) {
 93         //如果目录不存在就新建一个
 94         mkdir($upload_path . $sub_dir);
 95     }
 96     //生成唯一的文件名
 97     $up_name = uniqid() . $ext;
 98     // 判断是否为浏览器上传的文件
 99     if (! is_uploaded_file($file_tmp_name)) {
100         // 该临时文件可能被破坏(替换)
101         echo '非浏览器上传文件';
102         return false;
103     }
104 
105 
106     //5、移动零时文件保存到指定目录
107     $result = move_uploaded_file($file_tmp_name$upload_path . $sub_dir . $up_name);
108     if ($result) {
109        echo "<br/>".$upload_path . $sub_dir.$up_name;
110     } else {
111         // 移动失败
112         echo '移动失败';
113         return false;
114     }
115 
116 
117 }
118 
119 
120 function show_dump($array)
121 {
122     echo "<pre>";
123     print_r($array);
124     echo "</pre>";
125 }

 

  

Error

 

0:没有错误
1:文件过大,超过PHP.ini中配置:
2:文件过大,超过表单元素:MAX_FILE_SIZE
目的,将大小的限制,在表单层级实现。
Tip:改值也是服务器判断,虽然在表单中完成。
3:文件部分上传。
4:没有上传文件
5:一般认为:文件长度为0(程序自己定义的,不做准确值)
6:上传临时目录没有找到。
7:上传临时目录写入失败。

 

posted @ 2016-04-27 04:58  飞越全球  阅读(193)  评论(0编辑  收藏  举报