亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

Thinkphp上傳類實現上傳圖片的代碼

2020-03-22 19:44:05
字體:
來源:轉載
供稿:網友
本篇文章給大家帶來的內容是關于Thinkphp上傳類實現上傳圖片的代碼,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

thinkphp如何上傳圖片呢?下面就為大家詳細介紹下!

1、封裝上傳類方法

 ?php//調用上傳html' target='_blank'>public function uploadUser(){ $banner=$this- uploadYmdImg( ymd_banner  if(!empty($banner)){ $data[ ymd_banner ]=$banner; * 封裝圖片上傳 * */ public function uploadYmdImg($fileName,$route= banner ){ if(!empty($_FILES[$fileName][ tmp_name ])){ $upload = new /Think/Upload();// 實例化上傳類 $upload- maxSize = 3145728 ;// 設置附件上傳大小 $upload- exts = array( jpg , gif , png , jpeg // 設置附件上傳類型 $upload- rootPath = ./Upload/ .$route. / // 設置附件上傳根目錄 // 上傳單個文件  $info = $upload- uploadOne($_FILES[$fileName]); if(!$info) {// 上傳錯誤提示錯誤信息 $this- error($upload- getError()); }else{// 上傳成功 獲取上傳文件信息 return C( TMPL_PARSE_STRING.__YIMUDI__ ). /Upload/ .$route. / .$info[ savepath ].$info[ savename  }else{ return NULL;}

2、Thinkphp內部定義的上傳類

 ?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]// +----------------------------------------------------------------------// | Copyright (c) 2006-2016 http://thinkVeVb.com All rights reserved.// +----------------------------------------------------------------------namespace Think;class Upload { * 默認上傳配置 * @var array private $config = array( mimes = array(), //允許上傳的文件MiMe類型 maxSize = 0, //上傳的文件大小限制 (0-不做限制) exts = array(), //允許上傳的文件后綴 autoSub = true, //自動子目錄保存文件 subName = array( date , Y-m-d ), //子目錄創建方式,[0]-函數名,[1]-參數,多個參數使用數組 rootPath = ./Uploads/ , //保存根路徑 savePath = , //保存路徑 saveName = array( uniqid , ), //上傳文件命名規則,[0]-函數名,[1]-參數,多個參數使用數組 saveExt = , //文件保存后綴,空則使用原后綴 replace = false, //存在同名是否覆蓋 hash = true, //是否生成hash編碼 callback = false, //檢測文件是否存在回調,如果存在返回文件信息數組 driver = , // 文件上傳驅動 driverConfig = array(), // 上傳驅動配置 * 上傳錯誤信息 * @var string private $error = //上傳錯誤信息 * 上傳驅動實例 * @var Object private $uploader; * 構造方法,用于構造上傳實例 * @param array $config 配置 * @param string $driver 要使用的上傳驅動 LOCAL-本地上傳驅動,FTP-FTP上傳驅動 public function __construct($config = array(), $driver = , $driverConfig = null){ /* 獲取配置 */ $this- config = array_merge($this- config, $config); /* 設置上傳驅動 */ $this- setDriver($driver, $driverConfig); /* 調整配置,把字符串配置參數轉換為數組 */ if(!empty($this- config[ mimes ])){ if(is_string($this- mimes)) { $this- config[ mimes ] = explode( , , $this- mimes); $this- config[ mimes ] = array_map( strtolower , $this- mimes); if(!empty($this- config[ exts ])){ if (is_string($this- exts)){ $this- config[ exts ] = explode( , , $this- exts); $this- config[ exts ] = array_map( strtolower , $this- exts); * 使用 $this- name 獲取配置 * @param string $name 配置名稱 * @return multitype 配置值 public function __get($name) { return $this- config[$name]; public function __set($name,$value){ if(isset($this- config[$name])) { $this- config[$name] = $value; if($name == driverConfig ){ //改變驅動配置后重置上傳驅動 //注意:必須選改變驅動然后再改變驅動配置 $this- setDriver();  public function __isset($name){ return isset($this- config[$name]); * 獲取最后一次上傳錯誤信息 * @return string 錯誤信息 public function getError(){ return $this- error; * 上傳單個文件 * @param array $file 文件數組 * @return array 上傳成功后的文件信息 public function uploadOne($file){ $info = $this- upload(array($file)); return $info ? $info[0] : $info; * 上傳文件 * @param 文件信息數組 $files ,通常是 $_FILES數組 public function upload($files= ) { if( === $files){ $files = $_FILES; if(empty($files)){ $this- error = 沒有上傳的文件!  return false; /* 檢測上傳根目錄 */ if(!$this- uploader- checkRootPath($this- rootPath)){ $this- error = $this- uploader- getError(); return false; /* 檢查上傳目錄 */ if(!$this- uploader- checkSavePath($this- savePath)){ $this- error = $this- uploader- getError(); return false; /* 逐個檢測并上傳文件 */ $info = array(); if(function_exists( finfo_open )){ $finfo = finfo_open ( FILEINFO_MIME_TYPE ); // 對上傳文件數組信息處理 $files = $this- dealFiles($files);  foreach ($files as $key = $file) { $file[ name ] = strip_tags($file[ name  if(!isset($file[ key ])) $file[ key ] = $key; /* 通過擴展獲取文件類型,可解決FLASH上傳$FILES數組返回文件類型錯誤的問題 */ if(isset($finfo)){ $file[ type ] = finfo_file ( $finfo , $file[ tmp_name ] ); /* 獲取上傳文件后綴,允許上傳無后綴文件 */ $file[ ext ] = pathinfo($file[ name ], PATHINFO_EXTENSION); /* 文件上傳檢測 */ if (!$this- check($file)){ continue; /* 獲取文件hash */ if($this- hash){ $file[ md5 ] = md5_file($file[ tmp_name  $file[ sha1 ] = sha1_file($file[ tmp_name  /* 調用回調函數檢測文件是否存在 */ $data = call_user_func($this- callback, $file); if( $this- callback $data ){ if ( file_exists( . .$data[ path ]) ) { $info[$key] = $data; continue; }elseif($this- removeTrash){ call_user_func($this- removeTrash,$data);//刪除垃圾據 /* 生成保存文件名 */ $savename = $this- getSaveName($file); if(false == $savename){ continue; } else { $file[ savename ] = $savename; /* 檢測并創建子目錄 */ $subpath = $this- getSubPath($file[ name  if(false === $subpath){ continue; } else { $file[ savepath ] = $this- savePath . $subpath; /* 對圖像文件進行嚴格檢測 */ $ext = strtolower($file[ ext  if(in_array($ext, array( gif , jpg , jpeg , bmp , png , swf ))) { $imginfo = getimagesize($file[ tmp_name  if(empty($imginfo) || ($ext == gif empty($imginfo[ bits ]))){ $this- error = 非法圖像文件!  continue; /* 保存文件 并記錄保存成功的文件 */ if ($this- uploader- save($file,$this- replace)) { unset($file[ error ], $file[ tmp_name  $info[$key] = $file; } else { $this- error = $this- uploader- getError(); if(isset($finfo)){ finfo_close($finfo); return empty($info) ? false : $info; * 轉換上傳文件數組變量為正確的方式 * @access private * @param array $files 上傳的文件變量 * @return array private function dealFiles($files) { $fileArray = array(); $n = 0; foreach ($files as $key= $file){ if(is_array($file[ name ])) { $keys = array_keys($file); $count = count($file[ name  for ($i=0; $i $count; $i++) { $fileArray[$n][ key ] = $key; foreach ($keys as $_key){ $fileArray[$n][$_key] = $file[$_key][$i]; $n++; }else{ $fileArray = $files; break; return $fileArray; * 設置上傳驅動 * @param string $driver 驅動名稱 * @param array $config 驅動配置  private function setDriver($driver = null, $config = null){ $driver = $driver ? : ($this- driver ? : C( FILE_UPLOAD_TYPE  $config = $config ? : ($this- driverConfig ? : C( UPLOAD_TYPE_CONFIG  $class = strpos($driver, // )? $driver : Think//Upload//Driver// .ucfirst(strtolower($driver)); $this- uploader = new $class($config); if(!$this- uploader){ E( 不存在上傳驅動:{$name}  * 檢查上傳的文件 * @param array $file 文件信息 private function check($file) { /* 文件上傳失敗,捕獲錯誤代碼 */ if ($file[ error ]) { $this- error($file[ error  return false; /* 無效上傳 */ if (empty($file[ name ])){ $this- error = 未知上傳錯誤!  /* 檢查是否合法上傳 */ if (!is_uploaded_file($file[ tmp_name ])) { $this- error = 非法上傳文件!  return false; /* 檢查文件大小 */ if (!$this- checkSize($file[ size ])) { $this- error = 上傳文件大小不符!  return false; /* 檢查文件Mime類型 */ //TODO:FLASH上傳的文件獲取到的mime類型都為application/octet-stream if (!$this- checkMime($file[ type ])) { $this- error = 上傳文件MIME類型不允許!  return false; /* 檢查文件后綴 */ if (!$this- checkExt($file[ ext ])) { $this- error = 上傳文件后綴不允許  return false; /* 通過檢測 */ return true;
case 1: $this- error = 上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值! break; case 2: $this- error = 上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值! break; case 3: $this- error = 文件只有部分被上傳! break; case 4: $this- error = 沒有文件被上傳! break; case 6: $this- error = 找不到臨時文件夾! break; case 7: $this- error = 文件寫入失敗! break; default: $this- error = 未知上傳錯誤! * 檢查文件大小是否合法 * @param integer $size 數據 private function checkSize($size) { return !($size $this- maxSize) || (0 == $this- maxSize); * 檢查上傳的文件MIME類型是否合法 * @param string $mime 數據 private function checkMime($mime) { return empty($this- config[ mimes ]) ? true : in_array(strtolower($mime), $this- mimes); * 檢查上傳的文件后綴是否合法 * @param string $ext 后綴 private function checkExt($ext) { return empty($this- config[ exts ]) ? true : in_array(strtolower($ext), $this- exts); * 根據上傳文件命名規則取得保存文件名 * @param string $file 文件信息 private function getSaveName($file) { $rule = $this- saveName; if (empty($rule)) { //保持文件名不變 /* 解決pathinfo中文文件名BUG */ $filename = substr(pathinfo( _{$file[ name ]} , PATHINFO_FILENAME), 1); $savename = $filename; } else { $savename = $this- getName($rule, $file[ name if(empty($savename)){ $this- error = 文件命名規則錯誤! return false; /* 文件保存后綴,支持強制更改文件后綴 */ $ext = empty($this- config[ saveExt ]) ? $file[ ext ] : $this- saveExt; return $savename . . . $ext; * 獲取子目錄的名稱 * @param array $file 上傳的文件信息 private function getSubPath($filename) { $subpath = $rule = $this- subName; if ($this- autoSub !empty($rule)) { $subpath = $this- getName($rule, $filename) . / if(!empty($subpath) !$this- uploader- mkdir($this- savePath . $subpath)){ $this- error = $this- uploader- getError(); return false; return $subpath; * 根據指定的規則獲取文件或目錄名稱 * @param array $rule 規則 * @param string $filename 原文件名 * @return string 文件或目錄名稱 private function getName($rule, $filename){ $name = if(is_array($rule)){ //數組規則 $func = $rule[0]; $param = (array)$rule[1]; foreach ($param as $value) { $value = str_replace( __FILE__ , $filename, $value); $name = call_user_func_array($func, $param); } elseif (is_string($rule)){ //字符串規則 if(function_exists($rule)){ $name = call_user_func($rule); } else { $name = $rule; return $name;}

相關推薦:

php實現生成混合驗證碼與圖像驗證碼并測試(代碼)

tp5實現批量上傳圖片的方法代碼

以上就是Thinkphp上傳類實現上傳圖片的代碼的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区在线视频| 欧美日韩在线另类| 国产亚洲人成a一在线v站| 国产性猛交xxxx免费看久久| 66m—66摸成人免费视频| 91po在线观看91精品国产性色| 91丝袜美腿美女视频网站| 精品美女永久免费视频| 91久久久久久久久久久久久| 欧美精品一本久久男人的天堂| 亚洲已满18点击进入在线看片| 久99久在线视频| 欧美国产中文字幕| 欧美片一区二区三区| 91精品久久久久久久久青青| 久久久久久亚洲精品中文字幕| 美日韩精品视频免费看| 亚州欧美日韩中文视频| 91精品国产免费久久久久久| 国产美女扒开尿口久久久| 96精品久久久久中文字幕| 亚洲国产成人精品电影| 亚洲一区999| 国精产品一区一区三区有限在线| 日韩av在线免费看| 国产日产欧美a一级在线| 555www成人网| 色阁综合伊人av| 亚洲有声小说3d| 国产欧美精品一区二区| 久久久影视精品| 亚洲新声在线观看| 亚洲一区亚洲二区| 国产亚洲视频在线| 欧美国产视频一区二区| 日韩亚洲欧美中文高清在线| 9.1国产丝袜在线观看| 在线国产精品视频| 日本sm极度另类视频| 国产日韩中文字幕| 性欧美亚洲xxxx乳在线观看| 欧美与欧洲交xxxx免费观看| 欧美精品videofree1080p| 麻豆国产va免费精品高清在线| 琪琪亚洲精品午夜在线| 久久露脸国产精品| 黄色成人在线播放| 国产亚洲成精品久久| 色诱女教师一区二区三区| 欧美第一黄网免费网站| 国内精品小视频| 午夜精品蜜臀一区二区三区免费| 操日韩av在线电影| 国产亚洲精品久久久久久| 亚洲第一网站免费视频| 日韩在线观看你懂的| 97在线视频观看| 色婷婷av一区二区三区久久| 亚洲精品白浆高清久久久久久| 青草青草久热精品视频在线网站| 午夜精品理论片| 91中文字幕在线| 日本久久久久久久久| 欧美激情国内偷拍| 亚洲免费一级电影| 欧美激情精品久久久久久| 欧美制服第一页| 亚洲午夜精品久久久久久久久久久久| 色综合伊人色综合网| 亚洲二区在线播放视频| 日韩在线观看你懂的| 精品国产精品三级精品av网址| 成人精品在线视频| 亚洲精品国产综合区久久久久久久| 国产成人拍精品视频午夜网站| 国产99久久精品一区二区| 日韩成人免费视频| 国产视频综合在线| 亚洲黄页网在线观看| 91超碰中文字幕久久精品| 色天天综合狠狠色| 亚洲美女性视频| 亚洲欧洲午夜一线一品| 亚洲女人天堂视频| 97超级碰碰人国产在线观看| 国产精品白嫩美女在线观看| 最新69国产成人精品视频免费| 中文字幕在线观看日韩| 日韩视频在线一区| 国产精品美女网站| 亚洲第一色在线| 日韩成人激情视频| 成人免费淫片aa视频免费| 国产精品久久综合av爱欲tv| 亚洲天堂男人天堂女人天堂| 538国产精品一区二区免费视频| 亚洲国产精品久久久久秋霞蜜臀| 26uuu另类亚洲欧美日本老年| 久久久精品视频成人| 欧美日韩国产专区| 日本欧美一二三区| 中日韩美女免费视频网址在线观看| 91九色单男在线观看| 美日韩精品视频免费看| 亚洲人高潮女人毛茸茸| 91精品中文在线| 欧美激情网站在线观看| 亚洲欧美另类在线观看| 欧美日韩亚洲精品一区二区三区| 欧美成人中文字幕| 欧美精品在线极品| 一区二区三区视频免费在线观看| 国产午夜精品美女视频明星a级| 波霸ol色综合久久| 久久久国产精品亚洲一区| 懂色av影视一区二区三区| 亚洲深夜福利在线| 成人免费视频xnxx.com| 日韩av网站导航| 久精品免费视频| 亚洲精品中文字幕女同| 亚洲综合色激情五月| 欧美黄色三级网站| 国产日韩专区在线| 热re91久久精品国99热蜜臀| 久久中文字幕国产| 欧美麻豆久久久久久中文| 亚洲福利视频在线| 欧美视频在线观看免费| 日韩高清电影免费观看完整| 国产一区二区黑人欧美xxxx| 国产热re99久久6国产精品| 欧美成人精品一区二区| 亚洲精品一区二区在线| 欧美精品福利在线| 懂色aⅴ精品一区二区三区蜜月| 自拍偷拍亚洲一区| 国产精品久久久av久久久| 欧美丰满少妇xxxxx| 欧美日韩午夜视频在线观看| 亚洲女人初尝黑人巨大| 国产精品青草久久久久福利99| 在线观看亚洲区| 国产精品扒开腿做爽爽爽男男| 日韩av最新在线观看| 亚洲美女精品成人在线视频| 精品呦交小u女在线| 亚洲欧美日韩久久久久久| 欧美成人h版在线观看| 国产精品成av人在线视午夜片| 亚洲一区二区久久久久久久| 欧美性极品xxxx娇小| 亚洲欧美日韩中文在线| 庆余年2免费日韩剧观看大牛| www.日韩av.com| 精品中文字幕视频| 久久天天躁狠狠躁夜夜躁2014| 日本91av在线播放| 国产精品啪视频| 亚洲第一区第一页| 永久免费精品影视网站| 国产精品扒开腿做爽爽爽男男| 亚洲视频免费一区| 国产一区二区免费|