Maison  >  Article  >  développement back-end  >  PHP implémente le téléchargement d'images distantes et leur sauvegarde localement

PHP implémente le téléchargement d'images distantes et leur sauvegarde localement

陈政宽~
陈政宽~original
2017-06-28 13:07:201428parcourir

Cet article présente principalement la méthode de téléchargement d'images distantes en PHP. L'éditeur la trouve plutôt bonne, je vais donc la partager avec vous maintenant et la donner comme référence. Suivons l'éditeur et jetons un coup d'œil

Lorsque nous utilisons PHP pour créer un simple robot d'exploration, nous rencontrons souvent le besoin de télécharger des images distantes, alors implémentons simplement cette exigence.

1. Utilisez curl

Par exemple, nous avons les deux images suivantes :

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

Dans la première étape, nous peut directement Pour utiliser l'implémentation de code la plus simple :

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

Ensuite, lors du téléchargement d'images distantes, vous pouvez faire ceci :

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

2. Encapsuler une classe

Après avoir clarifié l'idée, on peut encapsuler cette fonction de base dans une classe :

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

Maintenant, on peut aussi l'optimiser un peu comme ça :

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

Après l'avoir encapsulé dans une classe, nous pouvons appeler le code comme ceci pour télécharger des images :

$spider = new Spider();

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

De cette façon, le téléchargement d'images à distance de base est OK.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. J'espère également que tout le monde soutiendra Script Home.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn