Maison > développement back-end > tutoriel php > Comment puis-je télécharger et enregistrer efficacement des images en utilisant cURL en PHP ?

Comment puis-je télécharger et enregistrer efficacement des images en utilisant cURL en PHP ?

Linda Hamilton
Libérer: 2024-12-01 02:23:13
original
855 Les gens l'ont consulté

How Can I Efficiently Download and Save Images Using cURL in PHP?

Téléchargement de fichiers image via CURL PHP

Pour récupérer et enregistrer des fichiers image à partir d'URL, CURL PHP offre une solution pratique. Cependant, certains problèmes de codage peuvent gêner vos tentatives. Analysons cet extrait de code :

function GetImageFromUrl($link)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 0);
    curl_setopt($ch, CURLOPT_URL, $link);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

$sourcecode = GetImageFromUrl($iticon);
$savefile = fopen(' /img/uploads/' . $iconfilename, 'w');
fwrite($savefile, $sourcecode);
fclose($savefile);
Copier après la connexion

Problèmes et solutions :

  1. Chemin de fichier incorrect :

    • L'instruction de sauvegarde du fichier contient de manière incorrecte des espaces (' ') dans le chemin. Remplacez-le par :

      $savefile = fopen('img/uploads/' . $iconfilename, 'w');
      Copier après la connexion
  2. Fonctionnalité manquante :

    • Le code récupère le image mais ne tient pas compte des données binaires. Pour garantir une sauvegarde correcte de l'image, ajoutez :

      curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
      Copier après la connexion
  3. Écrasement des fichiers existants :

    • Le code écrase tout fichier existant portant le même nom. Pour éviter cela, utilisez :

      if (file_exists($savefile)) {
        unlink($savefile);
      }
      Copier après la connexion

Code optimisé :

function grab_image($url, $saveto) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
    $raw = curl_exec($ch);
    curl_close($ch);
    if (file_exists($saveto)) {
        unlink($saveto);
    }
    $fp = fopen($saveto, 'x');
    fwrite($fp, $raw);
    fclose($fp);
}
Copier après la connexion

Remarque supplémentaire :

Dans votre fichier de configuration PHP (php.ini), assurez-vous que allow_url_fopen est activé.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal