PHP 下载网络图片

/*
 * 功能:php完美实现下载远程图片保存到本地
 * 参数:文件url,保存文件目录,保存文件名称,使用的下载方式
 * 当保存文件名称为空时则使用远程文件原来的名称
 */
function getImage($url, $save_dir, $filename = '', $type = 0)
{
//     echo $url."\n";
//     echo $save_dir."\n";
//     echo $filename."\n";
//     return false;
    if (trim($url) == '') {
        return array(
            'file_name' => '',
            'save_path' => '',
            'error' => 1
        );
    }
    // if(trim($save_dir)==''){
    // $save_dir='./';
    // }
    if (trim($filename) == '') { // 保存文件名
        $ext = strrchr($url, '.');
        if ($ext != '.gif' && $ext != '.jpg') {
            return array(
                'file_name' => '',
                'save_path' => '',
                'error' => 3
            );
        }
        // $filename=time().$ext;
        // $filename = strrchr($url, '/');
        $pos = strrpos($url, "/");
        if ($pos > 0) {
            $filename = substr($url, $pos + 1);
            echo $filename . "\n";
        }
    }
    if (0 !== strrpos($save_dir, '/')) {
        $save_dir .= '/';
    }
    // 创建保存目录
    if (! file_exists($save_dir) && ! mkdir($save_dir, 0777, true)) {
        return array(
            'file_name' => '',
            'save_path' => '',
            'error' => 5
        );
    }
    // 获取远程文件所采用的方法
    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);
        $img = curl_exec($ch);
        curl_close($ch);
    } else {
        ob_start();
        readfile($url);
        $img = ob_get_contents();
        ob_end_clean();
    }
    // $size=strlen($img);
    // 文件大小
    $fp2 = @fopen($save_dir . $filename, 'a');
    fwrite($fp2, $img);
    fclose($fp2);
    unset($img, $url);
    return array(
        'file_name' => $filename,
        'save_path' => $save_dir . $filename,
        'error' => 0
    );
}

 

posted on 2015-02-05 12:07  cv_ml_张欣男  阅读(212)  评论(0编辑  收藏  举报

导航