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);
Problèmes et solutions :
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');
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);
É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); }
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); }
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!