Il existe deux approches différentes pour charger une image à partir d`une URL, qui sont répertoriées ci-dessous :
- Utilisation du traitement de base des fichiers.
- Utilisation de la bibliothèque HTTP cURL.
Ces deux approches présentent des avantages et des inconvénients.
Utiliser le traitement de base des fichiers :C`est la manière la plus simple et la plus simple d`accomplir une tâche. Comme pour tout fichier, commencez par créer un fichier vide et ouvrez-le en mode "écriture". Après cela, extrayez le contenu de l`URL d`origine et collez-le dans ce fichier. Et c`est aussi simple que ça en a l`air.À partir du script, vous pouvez comprendre ce qu`il fait.
- Déclarer deux variables nommées $urlet $imgreprésentant l`URL source et le fichier cible, respectivement.
- Utilisez la fonction file_put_contents()pour écrire une chaîne dans un fichier qui prend deux arguments. L`un est le nom de fichier (ou chemin) et l`autre - le contenu de ce fichier.
- Utilisez la fonction file_get_contents()pour lire le fichier dans une chaîne.
Exemple :< ? php
$url
=
` https://media.engineerforengineer.org/wp-content/ uploads / ingénieurpouringénieur-6-1.png `
;
$img
=
` logo.png`
;
// Fonction d`écriture de l`image dans un fichier
file_put_contents
(
$img
,
file_get_contents
(
$ url
));
echo
" Fichier téléchargé ! "
< br> ? >
Fichier téléchargé !
Remarque.Enregistre l`image sur le serveur nommé logo.png.Maintenant, le seul problème avec cette méthode est qu`elle nécessite la configuration allow_url_fopen, qui est définie sur 1 par défaut. Mais parfois, les exigences du projet ne permettent pas cette option. Cela peut être dû à certaines mesures de sécurité préventives ou simplement à un principe de conception. Dans de tels cas, il existe un autre moyen d`enregistrer l`image.
En utilisant la bibliothèque HTTP, cURL :Strictement parlant, cURL - ce n`est pas seulement une bibliothèque HTTP. Il dispose également de plusieurs autres protocoles de transfert de données. Puisque notre image est sur un serveur HTTP, nous nous limiterons à cette petite section de cette bibliothèque. cURL nous permet de faire des requêtes HTTP en PHP. Commencez par initialiser une instance de celui-ci et configurez certains des paramètres requis pour la requête, y compris l`URL elle-même. Exécutez ensuite cette requête, qui renvoie le contenu du fichier. Après cela, le reste de la procédure est le même. Une fois que nous avons obtenu les données, placez-les dans un fichier et enregistrez-les.
Match :- Dans ce script, nous avons défini le file_get_contents_curl pour répliquer le < b>file_get_contentscomportement de la technique mentionnée précédemment.
- Dans cette fonction, nous avons initialisé une instance cURL en utilisantle curl_init pour l`utiliser pour récupérer data.
- Après cela, certains paramètres doivent être définis avec curl_setopt,pour que cet exemple particulier fonctionne. Cette fonction prend trois arguments
- Une instance cURL
- L`option correspondante à définir
- ET la valeur à laquelle l`option est définie
Cet exemple définit les paramètres suivants :- CURLOPT_HEADER, qui doit garantir si vous avez besoin de recevoir des en-têtes ou non ;
- CURLOPT_RETURNTRANSFER, qui transmet des données comme valeur de retour de curl_exec,plutôt que de les afficher directement.
- Il existe une autre option CURLOPT_URL qui définit l`URL de la requête.
- Nous extraireles données de curl_execet les renvoyer de la fonction parent.
- Ces données sont ensuite écrites dans un fichier sur votre ordinateur à l`aide de file_put_contents .
Exemple :< ? php
fonction
file_get_contents_curl (
$url
) {
$ch
= curl_init();
curl_setopt (
$ch
, CURLOPT_HEADER, 0);
curl_setopt (
$ch
, CURLOPT_RETURNTRANSFER, 1);
curl_setopt (
$ch
, CURLOPT_URL,
$url
);
$data
= curl_exec (
$ch
);
curl_close (
$ch
);
return
$data
;
}
$ données
= file_get_contents_curl (
` https://media.engineerforengineer.org/wp-content /uploads/engineerforengineer-6-1.png `
);
$fp
=
` logo-1.png`
;
file_put_contents
(
$fp
,
$data
);
echo
"Fichier téléchargé !"
?>
Sortie :Fichier téléchargé !
Cette méthode offre une certaine flexibilité lors de la récupération de contenu sur Internet. Comme mentionné précédemment, il n`est pas limité à HTTP uniquement, mais peut également être utilisé dans de nombreux autres cas. Cela vous permet de personnaliser la transmission comme vous le souhaitez. Par exemple, file_get_contentsutilise une simple requête GET pour récupérer des données, mais avec cURL, il peut également utiliser GET, POST, PUT et d`autres méthodes.