php下载网络图片常用的三个方法总结
2021-03-12 13:28
标签:comm 信息 访问 body 支持 contain 一起 文件管理 下载网络图片 下面来讲利用PHP下载网络图片常用的三个方法。当然,这三个方法都不是万能的,有时候会因为网络问题,或者网络图片的权限问题(大站一般都有防盗链)导致下载失败。 一起来看看吧,实际工作中经常用到。 优点:简单。 缺点:效率相对较低。 该方法主要用到的函数有两个 代码如下: 1 2 3 4 5 个人用的最多的方法。 缺点:稍微复杂点,要掌握 优点:效率高,很容易支持https; curl非常强大,也是phper必须掌握的技能,所以建议大家使用该方法。该方法的思路是,使用curl工具获取远程图片的信息,然后将该信息保存到本地的文件中。这里我没有对 关于curl的用法,如果有想深入了解的,可以在php中文网中搜索curl。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 这种方法也很简单,用到的是php的文件管理知识。首先创建两个文件句柄,一个用于读取远程图片的二进制信息,另一个用于保存图片信息的。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 个人工作中主要用到了下列的第一种及第二种方法。另外多说一句,图片下载倒没什么关系,但是下载的图片怎么用就要注意了。用的不好,就可能产生侵权问题了哦。 以上就是php下载网络图片常用的三个方法总结的详细内容 php下载网络图片常用的三个方法总结 标签:comm 信息 访问 body 支持 contain 一起 文件管理 下载网络图片 原文地址:https://www.cnblogs.com/ipengrui2/p/12827141.html方法一
file_get_contents
以及file_put_contents
这种方法非常简单,通俗的讲就是先get到图片内容,然后put到文件中。
$imgFile
=
‘http://***.***.***/Uploads/20200424/1587710975CZlGeB.jpg‘
;
// 获取文件名
$imgName
= trim(
strrchr
(
$imgFile
,
‘/‘
),
‘/‘
);
file_put_contents
(
$imgName
,
file_get_contents
(
$imgFile
));
方法二
curl
的用法,需要知道curl一些选项的含义。curl_exec
的结果做校验了,偷个懒。
$imgFile
=
‘https://***.***.***/uploads/20200121/bd873d80da430f8b74ef1ee751945595.png‘
;
function
down_img(
$imgUrl
)
{
$ch
= curl_init();
curl_setopt(
$ch
, CURLOPT_URL,
$imgUrl
);
// 请求地址
curl_setopt(
$ch
, CURLOPT_RETURNTRANSFER, 1);
// 不直接输出信息
// 可以访问https请求
curl_setopt(
$ch
, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt(
$ch
, CURLOPT_SSL_VERIFYPEER, 0);
// 执行curl并获取数据
$results
= curl_exec(
$ch
);
$imgName
= trim(
strrchr
(
$imgUrl
,
‘/‘
),
‘/‘
);
$fp
=
fopen
(
$imgName
,
‘w‘
);
fwrite(
$fp
,
$results
);
// 执行完毕后,记得关闭资源
curl_close(
$ch
);
}
down_img(
$imgFile
);
方法三
$imgFile
= ‘
$imgName
= trim(
strrchr
(
$imgFile
,
‘/‘
),
‘/‘
);
// 读取远程图片资源
$source
=
fopen
(
$imgFile
,
‘rb‘
);
// 创建本地文件资源句柄,用于保存图片信息
$down
=
fopen
(
$imgName
,
‘wb‘
);
while
(
$chunk
=
fread
(
$source
,1024)){
fwrite(
$down
,
$chunk
, 1024);
}
fclose(
$source
);
fclose(
$down
);
总结
上一篇:Ajax各参数介绍及使用