Heim >Backend-Entwicklung >PHP-Tutorial >Ausführliche Erklärung, wie man Remote-Bilder herunterlädt und sie lokal mit PHP speichert

Ausführliche Erklärung, wie man Remote-Bilder herunterlädt und sie lokal mit PHP speichert

墨辰丷
墨辰丷Original
2018-05-21 14:06:011875Durchsuche

In diesem Artikel wird hauptsächlich die Methode zum Herunterladen von Remote-Bildern in PHP vorgestellt. Der Herausgeber findet sie recht gut, daher werde ich sie jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor und werfen wir einen Blick darauf.

Bei der Verwendung von PHP zum Erstellen eines einfachen Crawlers müssen wir häufig Remote-Bilder herunterladen. Daher implementieren wir diese Anforderung einfach.

1. Curl verwenden

Zum Beispiel haben wir die folgenden zwei Bilder:

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

Im ersten Schritt können wir den einfachsten Code direkt zur Implementierung verwenden:

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);
}

Dann können Sie beim Herunterladen von Remote-Bildern Folgendes tun:

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

2. Kapseln Sie eine Klasse

Nachdem wir die Idee geklärt haben, können wir diese Grundfunktion kapseln eine Klasse:

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);
  }
}

Jetzt können wir es auch ein wenig so optimieren:

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);
  }

Nachdem wir es in eine Klasse gekapselt haben, können wir den Code wie folgt aufrufen, um Bilder herunterzuladen:

$spider = new Spider();

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

Auf diese Weise ist das einfache Herunterladen von Bildern aus der Ferne in Ordnung .

Verwandte Empfehlungen:

PHPRemote herunterladen Detaillierte Erläuterung der Definition und Verwendung von Dateiklassen

PHP Remote-Bilder herunterladen und im lokalen Code speichern

PHP-ImplementierungRemote-Dateibezogenen Code herunterladen

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie man Remote-Bilder herunterlädt und sie lokal mit PHP speichert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn