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
那些插件应该就是这样写出来的,经常复制图文感觉会很方便