PHP封裝保存遠程圖片函數

前段時間工作原因接觸到需要保存遠程圖片,嘗試了幾種方法,最後總結封裝出來了一個函數,可適應任何遠程圖片,代碼如下:

<span style="white-space:pre">		</span>/**
		 * $url		目標網址
		 * $filename   保存文件名	 	
		 * $savefile   保存文件路徑(絕對路徑)	 	
		 * @return  返回文件名
		  
		*/
		function photoDownload($url,$filename='',$savefile='/home/data/www/card/Web/uploads/tmp/'){     
			$imgArr = array('gif','bmp','png','ico','jpg','jepg');  
			if(!$url){return false;} 
			if(!$filename){
			  $url_arr = explode('.',$url);
			  $url_ext = array_pop($url_arr);
			  $ext=strtolower($url_ext);     
			  if(!in_array($ext,$imgArr)){return false;}  
			  $filename=date("dMYHis").'.'.$ext;     
			} 
			if(!is_dir($savefile)){mkdir($savefile, 0777);}  
			if(!is_readable($savefile)){ chmod($savefile, 0777);}  
			$filename = $savefile.$filename;  
			ob_start();     
			readfile($url);     
			$img = ob_get_contents();     
			ob_end_clean();     
			$size = strlen($img);     
			$fp2=@fopen($filename, "a");     
			fwrite($fp2,$img);     
			fclose($fp2);
			$tmp = '..';
			$filename_arr = explode('/',$filename);
			$new_filename_arr = array($tmp,$tmp,$filename_arr[6],$filename_arr[7],$filename_arr[8]);
			$filename = implode('/',$new_filename_arr);
			return $filename;     
		 }
這個函數應用的原理爲:獲取網址後,將圖片放置在緩存之中,然後通過寫入另外一個文件中,最後將擴展名連接上這個文件即完成了遠程文件保存在本地。

發佈了30 篇原創文章 · 獲贊 5 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章