//远程下载文件到本地(包括图片)
function downGetImage($url, $save_dir = '', $filename = '') {
if (trim($url) == '') {
return array('url' => '', 'error' => 1);
}
if (trim($save_dir) == '') {
$save_dir = 'upload/images';
}
if (trim($filename) == '') { // 保存文件名
$img_info = getimagesize($url);
$mime = $img_info['mime'];
$ext = strrchr($mime, '/');
if (!in_array($ext, array("/gif", "/jpg", "/png", "/jpeg", "/bmp"))) {
return array('url' => '', 'error' => 3);
}
$filename = time() .'.'.substr($ext,1);
}
if (0 !== strrpos($save_dir, '/')) {
$save_dir .= '/';
}
//创建保存目录
if (!file_exists($save_dir) && !mkdir($save_dir, 0777, true)) {
return array('url' => '', 'error' => 5);
}
//获取远程文件所采用的方法
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//-- curl获取页面重定向后的内容(图片链接被执行301跳转,重定向的情况,添加以下3个语句即可)
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
curl_setopt($ch,CURLOPT_MAXREDIRS,5); //最大跳转次数
//-- curl获取页面重定向后的内容
$img = curl_exec($ch);
curl_close($ch);
$fp2 = @fopen($save_dir.$filename, 'a');
fwrite($fp2, $img);
fclose($fp2);
unset($img);
return array(
'state' => 'SUCCESS',
'source' => $url,
'url' => '/' . $save_dir . $filename,
'error' => 0
);
}
调用
$url = 'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1507999582,2516368025&fm=26&gp=0.jpg';
$dir = 'upload/images';
$filename= '1.jpg' ;
downGetImage($url,$dir,$filename);