亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求實現圖片上傳后自動生成多張不同尺寸的圖片的實現思路謝謝了

求實現圖片上傳后自動生成多張不同尺寸的圖片的實現思路謝謝了

PHP
create_time 2015-07-10 13:13:54
<?php?namespace common\uploads;/**?* 構建上傳文件信息?* @return unknown?*/class Upload{public static function getFiles(){ $i=0;? ? $files = []; foreach($_FILES as $file){ if(is_string($file['name'])){ $files[$i]=$file; $i++; }elseif(is_array($file['name'])){ foreach($file['name'] as $key=>$val){ $files[$i]['name']=$file['name'][$key]; $files[$i]['type']=$file['type'][$key]; $files[$i]['tmp_name']=$file['tmp_name'][$key]; $files[$i]['error']=$file['error'][$key]; $files[$i]['size']=$file['size'][$key]; $i++; } } } return $files; }? ? public static function getExt($filename){ ? return strtolower(pathinfo($filename,PATHINFO_EXTENSION));}/**?* 產生唯一字符串?* @return string?*/public static function getUniName(){ return md5(uniqid(microtime(true),true));}/**?* 針對于單文件、多個單文件、多文件的上傳?* @param array $fileInfo?* @param string $path?* @param string $flag?* @param number $maxSize?* @param array $allowExt?* @return string?*/public static function uploadFile($fileInfo,$path='../web/uploads',$flag=true,$maxSize=1048576,$allowExt=array('jpeg','jpg','png','gif')){ //$flag=true; //$allowExt=array('jpeg','jpg','gif','png'); //$maxSize=1048576;//1M //判斷錯誤號? ?? if($fileInfo['error']===UPLOAD_ERR_OK){ //檢測上傳得到小 if($fileInfo['size']>$maxSize){ $res['mes']=$fileInfo['name'].'上傳文件過大'; } $ext= ?self::getExt($fileInfo['name']); //檢測上傳文件的文件類型 if(!in_array($ext,$allowExt)){ $res['mes']=$fileInfo['name'].'非法文件類型'; } //檢測是否是真實的圖片類型 if($flag){ if(!getimagesize($fileInfo['tmp_name'])){ $res['mes']=$fileInfo['name'].'不是真實圖片類型'; } } //檢測文件是否是通過HTTP POST上傳上來的 if(!is_uploaded_file($fileInfo['tmp_name'])){ $res['mes']=$fileInfo['name'].'文件不是通過HTTP POST方式上傳上來的'; }// if($res) return $res; //$path='./uploads'; if(!file_exists($path)){ mkdir($path,0777,true); chmod($path,0777); } $uniName = self::getUniName(); $destination=$path.'/'.$uniName.'.'.$ext; if(!move_uploaded_file($fileInfo['tmp_name'],$destination)){ $res['mes']=$fileInfo['name'].'文件移動失敗'; }? ? ? ?? $res['mes']=$fileInfo['name'].'上傳成功'; $res['dest']=$destination; return $res; }else{ //匹配錯誤信息 switch ($fileInfo ['error']) { case 1 : $res['mes'] = '上傳文件超過了PHP配置文件中upload_max_filesize選項的值'; break; case 2 : $res['mes'] = '超過了表單MAX_FILE_SIZE限制的大小'; break; case 3 : $res['mes'] = '文件部分被上傳'; break; case 4 : $res['mes'] = '沒有選擇上傳文件'; break; case 6 : $res['mes'] = '沒有找到臨時目錄'; break; case 7 : case 8 : $res['mes'] = '系統錯誤'; break; } return $res; }}}這是源碼不知道要在那里改= =
查看完整描述

1 回答

?
牽豬的倉鼠

TA貢獻3條經驗 獲得超0個贊

給你提供一種思路,在訪問時根據不同的參數來生成圖片,此處我給你一個簡單的demo

class?Bo_Thumb{	private?function?__construct(){		$this->_enkey?=?'aAi{537hs%^$&((^$)'?.?__FILE__;	}	/**	?*?單例對象	?*?	?*?@return?Bo_Thumb	?*/	static?function?instance()	{		static?$var?=?null;		if?(empty($var))		{			require_once?G_ROOT??.?'/image.php';			$var?=?new?self();		}		return?$var;	}	function?url($fileid,?$size_w,?$size_h)	{		$params?=?array(				'fileid'?=>?$fileid,				'w'	=>?$size_w,				'h'	=>?$size_h,				ROUTE_DO_KEY?=>?'i',			);		$params['token']?=?G::identify(json_encode($params)?.?$this->_enkey.?G::fast_uuid(1));		$params[ROUTE_DO_KEY]?=?'i'?.?G::identify(md5($params['token'].?$this->_enkey));				return?url(ROUTE_DO_APP,?url_sfparams('index','thumb',$params));	}	function?file($fileid,?$size_w,?$size_h,?$token,?$secret)	{		$secret_token?=?'i'?.?G::identify(md5($token.?$this->_enkey));				if?(?$secret_token?!=?$secret?)		{			Bo_Throw::error(Bo_Throw::Invalid_Param,?"token無效.");		}		$extname?=?strtolower(?pathinfo($fileid,?PATHINFO_EXTENSION)?);		if?(?!in_array($extname,?array('jpg','png','gif','jpeg'))?)		{			Bo_Throw::error(Bo_Throw::Invalid_Param,?"fileid類型不匹配");		}		$fileid_new?=?rtrim($fileid,?".{$extname}")?.?"-{$size_w}x{$size_h}xc.{$extname}";		$file_dest?=?Bo_Fileupload::instance()->filepath($fileid_new);		if?(?is_file($file_dest)?)		{			return?Bo_Fileupload::instance()->fileurl($fileid_new);		}		$file_src?=?Bo_Fileupload::instance()->filepath($fileid);		if?(?!is_file($file_src)?)		{			Bo_Throw::error(Bo_Throw::Invalid_Param,?"fileid源不存在");		}		$image?=?Image::createFromFile($file_src,$extname);		$image->crop($size_w,?$size_h);		switch?($extname)?{			case?'jpg':			case?'jpeg':				$image->saveAsJpeg($file_dest);				break;			case?'png':				$image->saveAsPng($file_dest);				break;			case?'gif':				$image->saveAsGif($file_dest);				break;		}		$image->destroy();		return?Bo_Fileupload::instance()->fileurl($fileid_new);	}}


查看完整回答
反對 回復 2015-08-07
  • 1 回答
  • 1 關注
  • 1636 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號