PHP下载远程图片保存到本地的方法:
/** * PHP下载远程图片 * Author Url: https://9iphp.com/ * @param string $url 图片路径URL * @param string $savePath 图片本地保存路径 * @param string $filename 保存名称,不带后缀 * @return string 图片路径及图片名称 */ function downPic($url, $savePath='', $filename='', $type=true){ // 没有图片路径或保存路径为空 if (empty($url) || empty($savePath)) return false; // 远程图片不存在 if (!@fopen($url, 'r')) return false; $ext = strrchr($url, "."); $data = getimagesize($url); // 根据文件Mime类型判断 if (!in_array($data['mime'], array('image/gif','image/jpeg','image/png'))) { return false; } // 也可根据后缀来判断 // if ($ext != '.gif' && $ext != '.jpg' && $ext != '.png') return false; $filename = $filename == '' ? date("YmdHis").'_'.rand(10000, 99999).$ext : $filename.$ext; // echo $filename; if (!file_exists($savePath)) { mkdir($savePath, 0777, true); } //两种下载方式 if ($type) { $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $file = curl_exec($ch); curl_close($ch); }else{ ob_start(); readfile($url); $file = ob_get_contents(); ob_end_clean(); } file_put_contents($savePath.$filename,$file); // 或用fopen方法保存 /*$res = fopen($savePath.$filename,'a'); fwrite($res, $file); fclose($res);*/ return $savePath.$filename; } // 使用方法 downPic('http://img.t.sinajs.cn/t6/skin/skin053/images/body_bg.jpg','./'); //或者指定保存名称 downPic('http://img.t.sinajs.cn/t6/skin/skin053/images/body_bg.jpg','./','pic');
缺陷:目前不支持https链接的图片下载
轻微生活 2015/04/28 18:25
那些插件应该就是这样写出来的,经常复制图文感觉会很方便