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;
}

 

posted @ 2024-02-04 14:41  潘潘潘的博客  阅读(110)  评论(0编辑  收藏  举报