封裝一個檔案上傳並檢測安全性、重新命名的指令碼

來源:互聯網
上載者:User

標籤:dna   style   res   命名   color   類型   pre   3.1   移動   

 1 <?php 2  3 /** 4  *實現檔案上傳 5  *@param array $file 上傳的檔案的五個資訊 6  *@param array $allow 允許檔案上傳的類型 7  *@param string & $error 用來記錄錯誤資訊 8  *@param string $part 檔案上傳目錄 9  *@param int $maxsize = 104857610  *@return mixed false|$nwename 失敗就返回false,成功就返回新名字11  */12 13  function upload($file,$allow,& $error,$path,$maxsize=1048576){14     //1,先判斷系統錯誤15     switch($file[‘error‘]){16         case 1 : $error = "上傳失敗,超出了檔案大小的限制!";17             return false;18         case 2 : $error = "上傳失敗,超出了瀏覽器表單允許的檔案大小!";19             return false;20         case 3 : $error = "上傳失敗,檔案上傳不完整!";21             return false;22         case 4 : $error = "上傳失敗,請先選擇要上傳的檔案!";23             return false;24         case 6 : 25         case 7 : $error = "對不起,伺服器繁忙,請稍後再試!";26             return false;27     }28 29     //2驗證邏輯錯誤--檔案大小30     if($file[‘size‘] > $maxsize){31         $error = "上傳失敗,超出了檔案大小的限制!";32         return false;33     }34 35     //檔案類型36     if(!in_array($file[‘type‘],$allow)){37         $error = "上傳檔案類型不正確,允許的類型有:" . implode(‘,‘,$allow);38         return false;39     }40     //3,移動臨時檔案41     //3.1得到檔案的新名字42     $newname = randName($file[‘name‘]);43     //3.2 確定檔案儲存體路徑44     $target = $path . ‘/‘ . $newname;45     //3.3 開始移動46     $result = move_uploaded_file($file[‘tmp_name‘],$target);47     if($result){48         //上傳成功49         return $newname;50     }else{51         //上傳失敗52         $error = "發生未知錯誤,上傳失敗!";53         return false;54     }55 }56 57 /**58  *產生一個隨機名字的函數 = 目前時間戳 + 隨機產生的字元59  *@param string $filename 檔案原始的名字60  *@return string $newname 檔案的新名字61  *62  */63 64 function randName($filename){65     //1,組建檔案名的時間戳記部分66     $newname = date("YmdHis");67     //2,加上隨機的幾位元字68     $str = "1234567890";69     for($i=0;$i<6;$i++){70         $newname .= $str[mt_rand(0,strlen($str)-1)];71     }72     //3,加上檔案的尾碼名73     $newname .= strrchr($filename,‘.‘);74     return $newname;75 }

 

封裝一個檔案上傳並檢測安全性、重新命名的指令碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.