当前位置:首页 > PHP教程 > php上传下载 > 列表

php下载网络图片常用的三个方法总结

发布:smiling 来源: PHP粉丝网  添加日期:2022-06-11 08:57:37 浏览: 评论:0 

下面来讲利用PHP下载网络图片常用的三个方法,当然,这三个方法都不是万能的,有时候会因为网络问题,或者网络图片的权限问题(大站一般都有防盗链)导致下载失败。

一起来看看吧,实际工作中经常用到。

方法一

优点:简单。

缺点:效率相对较低。

该方法主要用到的函数有两个file_get_contents以及file_put_contents这种方法非常简单,通俗的讲就是先get到图片内容,然后put到文件中。

代码如下:

  1. <?php 
  2.  
  3. $imgFile = 'http://***.***.***/Uploads/20200424/1587710975CZlGeB.jpg'
  4.  
  5. // 获取文件名 
  6.  
  7. $imgName = trim(strrchr($imgFile'/'), '/'); 
  8.  
  9. file_put_contents($imgNamefile_get_contents($imgFile)); 

方法二

个人用的最多的方法。

缺点:稍微复杂点,要掌握curl的用法,需要知道curl一些选项的含义。

优点:效率高,很容易支持https;

curl非常强大,也是phper必须掌握的技能,所以建议大家使用该方法。该方法的思路是,使用curl工具获取远程图片的信息,然后将该信息保存到本地的文件中。这里我没有对curl_exec的结果做校验了,偷个懒。

关于curl的用法,如果有想深入了解的,可以在php中文网中搜索curl。

  1. $imgFile = 'https://***.***.***/uploads/20200121/bd873d80da430f8b74ef1ee751945595.png'
  2.  
  3. function down_img($imgUrl
  4.  
  5.  
  6.     $ch = curl_init(); 
  7.  
  8.     curl_setopt($ch, CURLOPT_URL, $imgUrl);    // 请求地址 
  9.  
  10.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    // 不直接输出信息 
  11.  
  12.     // 可以访问https请求 
  13.  
  14.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
  15.  
  16.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
  17.  
  18.     // 执行curl并获取数据 
  19.  
  20.     $results = curl_exec($ch); 
  21.  
  22.     $imgName = trim(strrchr($imgUrl'/'), '/'); 
  23.  
  24.     $fp = fopen($imgName'w'); 
  25.  
  26.     fwrite($fp$results); 
  27.  
  28.       // 执行完毕后,记得关闭资源 
  29.  
  30.     curl_close($ch); 
  31.  
  32.  
  33. down_img($imgFile); 

方法三

这种方法也很简单,用到的是php的文件管理知识,首先创建两个文件句柄,一个用于读取远程图片的二进制信息,另一个用于保存图片信息的。

  1. <?php 
  2.  
  3. $imgFile = '  
  4.  
  5. $imgName = trim(strrchr($imgFile'/'), '/'); 
  6.  
  7.  
  8.  
  9. // 读取远程图片资源 
  10.  
  11. $source = fopen($imgFile'rb'); 
  12.  
  13. // 创建本地文件资源句柄,用于保存图片信息 
  14.  
  15. $down   = fopen($imgName'wb'); 
  16.  
  17. while ($chunk = fread($source,1024)){ 
  18.  
  19.     fwrite($down$chunk, 1024); 
  20.  
  21.  
  22. fclose($source); 
  23.  
  24. fclose($down); 

总结:个人工作中主要用到了下列的第一种及第二种方法,另外多说一句,图片下载倒没什么关系,但是下载的图片怎么用就要注意了,用的不好,就可能产生侵权问题了哦。

Tags: php下载网络图片

分享到: