/**
* 下载远程图片保存到本地
* @param $url 文件url
* @param $save_dir 保存文件目录
* @param $filename 保存文件名称
* @param $type 使用的下载方式
* @return bool
*/
function downloadImage($url, $save_dir = '', $filename = '')
{
if (trim($url) == '') {
return '';
}
if (trim($save_dir) == '') {
$save_dir = './';
}
if (trim($filename) == '') { //保存文件名
$ext = strrchr($url, '.');
if ($ext != '.gif' && $ext != '.jpg' && $ext != '.png' && $ext != '.jpeg') {
return '';
}
$filename = uniqid() . $ext;
}
if (0 !== strrpos($save_dir, '/')) {
$save_dir .= '/';
}
//创建保存目录
if (!file_exists($save_dir) && !mkdir($save_dir, 0777, true)) {
return '';
}
//获取远程文件所采用的方法
try {
ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
} catch (\Exception $e) {
// 下载失败,返回原路径
return '';
}
//文件大小
$fp2 = @fopen($save_dir . $filename, 'a');
fwrite($fp2, $img);
fclose($fp2);
unset($img, $url);
// 返回文件路径
$localPath = $save_dir . $filename;
return public_path() . $localPath;
}