php如何下载图片?
嘻嘻发布于2022-05-01
浏览在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);
}
结论
具体使用哪种方式下载取决具体的场景,最后不要相信网上免费的代理,大概率都是不能用的。