101)PHP,多檔案上傳

來源:互聯網
上載者:User

標籤: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,多檔案上傳

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.