php如何下载图片?

在php中如何使用代码快速下载图片,在下载的过程一般会遇到两个问题,1.需要翻墙,使用代理 ; 2.图片资源有跳转,如果遇到这两个问题,下载图片就会有点复杂,通常都会使用curl来实现。

一、简单图片下载

使用场景:图片url比较明确

$url = 'http://example.com/image.php';
$img = '/my/folder/flower.gif';
file_put_contents($img, file_get_contents($url));

二、curl命令下载图片

使用场景:

  • 需要代理
  • 图片链接有跳转,不能直接下载
  • 需要设置userAgent
function curl2saveimg($url, $name) {
    $image = 'images/' . $name . '.png';
    $ch = curl_init($url);
    $fp = fopen($image, 'wb');
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch,CURLOPT_TIMEOUT,10);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_PROXY, 'socks5://127.0.0.1:8080');
    if(curl_exec($ch) === false) {
        // echo 'Curl error: ' . curl_error($ch);
        echo '下载' . $url . '失败' . curl_error($ch) . PHP_EOL;
        fclose($fp);
        curl_close($ch);
        unlink($image);
        return;
    } else {
        echo '成功下载' . $url . PHP_EOL;
    }
    curl_close($ch);
    fclose($fp);
}

结论

具体使用哪种方式下载取决具体的场景,最后不要相信网上免费的代理,大概率都是不能用的。

iproute2和net-tools比较
linux中/etc/passwd详解
标签:

发表我的评论

电子邮件地址不会被公开。 必填项已用*标注

42 + 33 =

ajax-loader