欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

在使用 PHP 做簡(jiǎn)單的爬蟲(chóng)的時(shí)候,我們經(jīng)常會(huì)遇到需要下載遠(yuǎn)程圖片的需求,所以下面來(lái)簡(jiǎn)單實(shí)現(xiàn)這個(gè)需求。

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'
];

第一步,我們可以直接來(lái)使用最簡(jiǎn)單的代碼實(shí)現(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);
}

那在下載遠(yuǎn)程圖片的時(shí)候就可以這樣:

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

2.封裝一個(gè)類

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

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)用代碼來(lái)下載圖片:

$spider = new Spider();

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

這樣,對(duì)付基本的遠(yuǎn)程圖片下載就OK了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

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

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

    基于initPHP的框架介紹

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

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

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

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

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

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

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

    PHP、Python和Javascript的裝飾器模式對(duì)比

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

    YII2框架使用控制臺(tái)命令的方法分析

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

    Laravel+jQuery實(shí)現(xiàn)AJAX分頁(yè)效果

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

    TP5使用RabbitMQ實(shí)現(xiàn)消息隊(duì)列的項(xiàng)目實(shí)踐

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

最新評(píng)論