亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP實現(xiàn)下載遠程圖片保存到本地的方法

 更新時間:2017年06月19日 09:55:54   作者:JellyBool  
本篇文章主要介紹了PHP實現(xiàn)下載遠程圖片的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在使用 PHP 做簡單的爬蟲的時候,我們經(jīng)常會遇到需要下載遠程圖片的需求,所以下面來簡單實現(xiàn)這個需求。

1.使用 curl

比如我們有下面這兩張圖片:

$images = [
  'https://dn-laravist.qbox.me/2015-09-22_00-17-06j.png',
  'https://dn-laravist.qbox.me/2015-09-23_00-58-03j.png'
];

第一步,我們可以直接來使用最簡單的代碼實現(xiàn):

function download($url, $path = 'images/')
{
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
  $file = curl_exec($ch);
  curl_close($ch);
  $filename = pathinfo($url, PATHINFO_BASENAME);
  $resource = fopen($path . $filename, 'a');
  fwrite($resource, $file);
  fclose($resource);
}

那在下載遠程圖片的時候就可以這樣:

foreach ( $images as $url ) {
  download($url);
}

2.封裝一個類

縷清思路之后,我們可以將這個基本的功能封裝到一個類中:

class Spider {

  public function downloadImage($url, $path = 'images/')
  {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    $file = curl_exec($ch);
    curl_close($ch);
    $filename = pathinfo($url, PATHINFO_BASENAME);
    $resource = fopen($path . $filename, 'a');
    fwrite($resource, $file);
    fclose($resource);
  }
}  

在者,我們還可以這樣稍微優(yōu)化一下:

public function downloadImage($url, $path='images/')
  {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    $file = curl_exec($ch);
    curl_close($ch);

    $this->saveAsImage($url, $file, $path);
  }

  private function saveAsImage($url, $file, $path)
  {
    $filename = pathinfo($url, PATHINFO_BASENAME);
    $resource = fopen($path . $filename, 'a');
    fwrite($resource, $file);
    fclose($resource);
  }

封裝成類之后,我們可以這樣調(diào)用代碼來下載圖片:

$spider = new Spider();

foreach ( $images as $url ) {
  $spider->downloadImage($url);
}

這樣,對付基本的遠程圖片下載就OK了。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • PHP中__get()和__set()的用法實例詳解

    PHP中__get()和__set()的用法實例詳解

    在PHP5中,預定義了兩個函數(shù)“__get()”和“__set()”來獲取和賦值其屬性,對每個字段進行set和get的操作。只需要加上兩個魔術(shù)方法即可
    2013-06-06
  • java微信開發(fā)之上傳下載多媒體文件

    java微信開發(fā)之上傳下載多媒體文件

    這篇文章主要為大家詳細介紹了java微信開發(fā)之簡單實現(xiàn)上傳下載多媒體文件的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 基于initPHP的框架介紹

    基于initPHP的框架介紹

    本篇文章小編將為大家介紹,initPHP框架,需要的朋友參考下
    2013-04-04
  • php+ajax導入大數(shù)據(jù)時產(chǎn)生的問題處理

    php+ajax導入大數(shù)據(jù)時產(chǎn)生的問題處理

    介紹:就是想實現(xiàn)簡單的ajax上傳數(shù)據(jù),但是當數(shù)據(jù)量較大的時候,問題就一個一個接著來了,其實數(shù)據(jù)也不是很大,就是csv格式數(shù)據(jù) 不到5w條數(shù)據(jù)。大小5M,一開始認為這個很簡單,就是先上傳一下文件,然后讀取一下,存到數(shù)據(jù)庫就好了,結(jié)果,可能我比較菜,弄了半天做出這個功能。環(huán)境是linux.
    2014-06-06
  • 基于thinkPHP3.2實現(xiàn)微信接入及查詢token值的方法

    基于thinkPHP3.2實現(xiàn)微信接入及查詢token值的方法

    這篇文章主要介紹了基于thinkPHP3.2實現(xiàn)微信接入及查詢tooken值的方法,結(jié)合實例形式分析了thinkPHP整合微信接口操作token值查詢的具體實現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • destoon調(diào)用企業(yè)會員公司形象圖片的實現(xiàn)方法

    destoon調(diào)用企業(yè)會員公司形象圖片的實現(xiàn)方法

    這篇文章主要介紹了destoon調(diào)用企業(yè)會員公司形象圖片的實現(xiàn)方法,非常實用,需要的朋友可以參考下
    2014-08-08
  • PHP、Python和Javascript的裝飾器模式對比

    PHP、Python和Javascript的裝飾器模式對比

    這篇文章主要介紹了PHP、Python和Javascript的裝飾器模式對比,修飾模式(Decorator Pattern),又叫裝飾者模式,是面向?qū)ο缶幊填I(lǐng)域中,一種動態(tài)地往一個類中添加新的行為的設(shè)計模式,需要的朋友可以參考下
    2015-02-02
  • YII2框架使用控制臺命令的方法分析

    YII2框架使用控制臺命令的方法分析

    這篇文章主要介紹了YII2框架使用控制臺命令的方法,結(jié)合實例形式分析了YII2使用控制臺命令的相關(guān)步驟、原理與操作技巧,需要的朋友可以參考下
    2020-03-03
  • Laravel+jQuery實現(xiàn)AJAX分頁效果

    Laravel+jQuery實現(xiàn)AJAX分頁效果

    這篇文章主要介紹了Laravel+jQuery實現(xiàn)AJAX分頁效果的方法,簡單介紹了jQuery的ajax調(diào)用結(jié)合Laravel控制器實現(xiàn)無刷新分頁功能的相關(guān)操作技巧,需要的朋友可以參考下
    2016-09-09
  • TP5使用RabbitMQ實現(xiàn)消息隊列的項目實踐

    TP5使用RabbitMQ實現(xiàn)消息隊列的項目實踐

    本文主要介紹了TP5使用RabbitMQ實現(xiàn)消息隊列的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06

最新評論