PHP下载远程图片

PHP下载远程图片

最简单的方法:

$image_url = 'http://xxxx.com/xxx.png';
$image_content = file_get_contents($image_url);
$save_path = '1.png';
file_put_contents($save_path, $image_content);

但是如果图片地址是有302跳转的或者gzip压缩或者需要登录状态才能下载,这时就需要用到curl来下载。

header方式传cookie和请求的资源有gzip:

$url = 'http://xxxx.com/xxx.png';
$headers = array(
	'Referer: https://xxx.cn',
	'Cookie: xxxxx'
);
$save_path = '1.png';


$tmp_file = tempnam(sys_get_temp_dir(), 'image'); // 创建临时文件
$resource = fopen($tmp_file, 'wb');

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_FILE, $resource);
curl_setopt($curl, CURLOPT_ENCODING, 'gzip'); // 如果请求的资源没有gzip则不需要这一行
curl_exec($curl);
curl_close($curl);

fclose($resource);
copy($tmp_file, $save_path);
@unlink($tmp_file);

cookie是通过传存文件方式请求:

$url = 'http://xxxx.com/xxx.png';
$headers = array(
	'Referer: https://xxx.cn'
);
$cookie_path = 'test_cookie.txt'; // 如果是cookie文件方式,需要先获取cookie信息写入到文件,具体方法自行百度
$save_path = '1.png';


$tmp_file = tempnam(sys_get_temp_dir(), 'image'); // 创建临时文件
$resource = fopen($tmp_file, 'wb');

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_path);  // cookie有2种方式,可以通过cookie文件或者直接在请求头写死cookie
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_path); // cookie有2种方式,可以通过cookie文件或者直接在请求头写死cookie
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_FILE, $resource);
curl_setopt($curl, CURLOPT_ENCODING, 'gzip'); // 如果请求的资源没有gzip则不需要这一行
curl_exec($curl);
curl_close($curl);

fclose($resource);
copy($tmp_file, $save_path);
@unlink($tmp_file);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值