PHP封装保存远程图片函数

来源:互联网 发布:koolearn新东方网络在线课堂 编辑:程序博客网 时间:2024/06/06 16:55

前段时间工作原因接触到需要保存远程图片,尝试了几种方法,最后总结封装出来了一个函数,可适应任何远程图片,代码如下:

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

0 0