php上傳文件分類實(shí)例代碼
更新時(shí)間:2017年02月17日 11:17:41 作者:李佳敏
這篇文章主要介紹了php上傳文件分類實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
廢話不多說(shuō)了,直接給大家貼代碼了,具體代碼如下所示:
<?php /** * 文件上傳類 * @author lijiamin * @time 2017-02-17 * @email 1195989301@qq.com */ class Upload{ private $allowExt = array('gif','jpg','jpeg','bmp','png','swf');//限制文件上傳的后綴名 private $maxSize = 1;//限制最大文件上傳1M /** * 獲取文件的信息 * @param str $flag 上傳文件的標(biāo)識(shí) * @return arr 上傳文件的信息數(shù)組 */ public function getInfo($flag){ return $_FILES[$flag]; } /** * 獲取文件的后綴 * @param str $filename 文件名 * @return str 文件擴(kuò)展名 */ public function getExt($filename){ return pathinfo($filename,PATHINFO_EXTENSION); } /** * 檢測(cè)上傳文件是否合法 * @param str $filename 文件名 * @return bool 文件擴(kuò)展名是否合法 */ private function checkExt($filename){ $ext = $this->getExt($filename); return in_array($ext,$this->allowExt); } /** * 檢測(cè)文件大小是否超過(guò)限制 * @param int size 文件大小 * @return bool 文件大小是否超過(guò)限制 */ public function checkSize($size){ return $size < $this->maxSize * 1024 * 1024; } /** * 隨機(jī)的文件名 * @param int $len 隨機(jī)文件名的長(zhǎng)度 * @return str 隨機(jī)字符串 */ public function randName($len=6){ return substr(str_shuffle('abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ234565789'),0,$len); } /** * 創(chuàng)建文件上傳到的路徑 * @return str 文件上傳的路徑 */ public function createDir(){ //上傳文件路徑 $dir = './upload/'.date('Y/m/d',time()); //判斷文件夾是否存在,不存在則新建 if(is_dir($dir) || mkdir($dir,0777,true)){ return $dir; } } /** * 文件上傳 * @param str $flag 文件上傳標(biāo)識(shí) * @return array 返回上傳文件名、保存路徑 */ public function uploadFile($flag){ if($_FILES[$flag]['name'] === '' || $_FILES[$flag]['error'] !== 0){ echo "沒(méi)有上傳文件"; return; } $info = $this->getInfo($flag); if(!$this->checkExt($info['name'])){ echo "不支持的文件類型"; return; } if(!$this->checkSize($info['size'])){ echo "文件大小超過(guò)限制"; return; } $filename = $this->randName().'.'.$this->getExt($info['name']); $dir = $this->createDir(); if(!move_uploaded_file($info['tmp_name'], $dir.'/'.$filename)){ echo "文件上傳失敗"; }else{ return array('filename'=>$filename,'dir'=>$dir); } } } ?>
相關(guān)文章
IDEA報(bào)錯(cuò):java:無(wú)效的源發(fā)行版21解決方式
這篇文章主要給大家介紹了關(guān)于IDEA報(bào)錯(cuò):java:無(wú)效的源發(fā)行版21的解決方式,這個(gè)錯(cuò)誤是因?yàn)槟愕捻?xiàng)目使用的Java版本與你的IDEA使用的Java版本不一致導(dǎo)致的,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06Java中實(shí)現(xiàn)簡(jiǎn)單的Excel導(dǎo)出
今天小編就為大家分享一篇關(guān)于Java中實(shí)現(xiàn)簡(jiǎn)單的Excel導(dǎo)出,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01java基礎(chǔ)之Integer與int類型輸出示例解析
這篇文章主要為大家介紹了java基礎(chǔ)之Integer與int類型輸出示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06Java 17 更新后的 strictfp 關(guān)鍵字
strictfp 可能是最沒(méi)有存在感的關(guān)鍵字了,很多人寫(xiě)了多年 Java 甚至都不知道它的存在,strictfp,字面意思就是嚴(yán)格的浮點(diǎn)型。這玩意兒居然還有個(gè)關(guān)鍵字,可見(jiàn)其地位還是很高的。下面文章小編就帶大家詳細(xì)介紹其關(guān)鍵字,需要的朋友可以參考一下2021-09-09Java子類對(duì)象的實(shí)例化過(guò)程分析
這篇文章主要介紹了Java子類對(duì)象的實(shí)例化過(guò)程,結(jié)合具體實(shí)例形式分析了java子類對(duì)象的實(shí)例化的步驟、原理、實(shí)現(xiàn)方法,需要的朋友可以參考下2019-09-09MyBatis一級(jí)緩存與二級(jí)緩存原理與作用分析
mybatis-plus是一個(gè)Mybatis的增強(qiáng)工具,在Mybatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生,這篇文章帶你了解Mybatis的一級(jí)和二級(jí)緩存2022-12-12