Page 1 sur 1

Enregistrer une image depuis un URL

Posté : 16 nov. 2021, 12:08
par Ciginfo
Bonjour,
Je cherche à enregistrer l'image d'une URL dans le repertoire Downloads de mon PC sous windows.
Pourquoi ce script ne fonctionne pas?

Code : Tout sélectionner

$path_source = 'https://forum.phpfrance.com/styles/PHPfrance/theme/phpfrance-logo.png'; $path_dest = 'C:/Users/Francois/image_test.jpg'; // Enregistrer l'image file_put_contents($path_dest, file_get_contents($path_source));
A noter que je récupère et affiche facilement l'image dans le browser avec le code suivant

Code : Tout sélectionner

$TheImage = file_get_contents(https://forum.phpfrance.com/styles/PHPfrance/theme/phpfrance-logo.png'); echo $TheImage; //Affiche l'image récupérée
Merci de votre aide

Re: Enregistrer une image depuis un URL

Posté : 16 nov. 2021, 21:17
par ynx
Bonjour,

Sur mon poste le script fonctionne correctement.
Un problème de droit sur le dossier ? Pas d'erreur PHP ?
<?php

$path_source = 'https://forum.phpfrance.com/styles/PHPfrance/theme/phpfrance-logo.png';
$path_dest = 'C:/Users/Francois/image_test.jpg';

if (is_writable(dirname($path_dest))) {
    echo 'Le dossier est accessible en écriture';
} else {
    echo 'Le dossier n\'est pas accessible en écriture';
}

file_put_contents($path_dest, file_get_contents($path_source));

if (false === file_put_contents($path_dest, file_get_contents($path_source))) {
    print_r(error_get_last());
} else {
    echo 'Image enregistrée';
}


Re: Enregistrer une image depuis un URL

Posté : 17 nov. 2021, 13:34
par @rthur
Vérifie dans les logs de ton serveur (phpinfo() pour savoir où sont les logs) pour voir si il n'y a pas des messages d'erreurs que tu manquerais.

Par ailleurs tu es sûr que "Francois" n'a pas de cédille sur ton ordi ?
Si tu fais Démarrer > exécuter > "C:\Users\Francois\" ça affiche bien le bon répertoire ?

Si tu as un antivirus essaye de le désactiver pour voir si ce n'est pas lui qui bloquerait.

Et sinon essaye dans d'autres répertoires.

Re: Enregistrer une image depuis un URL

Posté : 17 nov. 2021, 15:27
par Ciginfo
Bonjour,
Oui Francois sans cedille est le bon repertoire. Ca ne fonctionne pas non plus dans d'autres repertoires.
Avec le script de ynx j'obtiens le message d'erreur ci dessous :
Le dossier n'est pas accessible en écritureArray ( [type] => 2 [message] => file_put_contents(C:/Users/image_test.jpg): failed to open stream: No such file or directory [file] => /home/paujazz/www/QR/qr_essai.php [line] => 14 )
Il semble bien qu'il y ait un problème d'écriture dans le dossier, mais j'ai sur mon PC décoché "Lecture seule" du repertoire Users et ça me met tjs le meme message d'erreur. Je ne comprends pas ce qui se passe.
Vous pouvez essayer mon fichier Https:// paujazz.fr/QR/qr_essai.php et me dire ce qui se passe chez vous?

Re: Enregistrer une image depuis un URL

Posté : 17 nov. 2021, 15:46
par ynx
Ah du coup le serveur PHP n'est pas sur le même ordinateur où est situé le dossier C:/Users/Francois/ ?
PHP ne peut accéder au système de fichier uniquement sur l'ordinateur ou le serveur sur lequel il est exécuté.

Si ton script php est herbergé sur un serveur distant, PHP ne pourra pas accéder au répertoire C:/Users/Francois/ de ton ordinateur (ce serait une grosse faille de sécurité sinon puisque n'importe quel site internet pourrait enregistrer n'importe quel fichier sur le poste de l'internaute).
Si tu veux proposer à l'internaute de télécharger l'image sur son poste, le plus simple est de faire un lien html avec l'attribut download. C'est par contre l'internaute qui devra définir dans quel dossier il souhaite enregistrer l'image sur son poste, tu ne pourras le définir pour lui.