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;     
		 }
这个函数应用的原理为:获取网址后,将图片放置在缓存之中,然后通过写入另外一个文件中,最后将扩展名连接上这个文件即完成了远程文件保存在本地。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值