php下载远程图片保存到本地
/** * 下载远程图片保存到本地 * @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; }