Enregistrement de l`image à partir de l`url en PHP

| | | | | | | | | | | | | | | | | | | | |
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.