Je dois enregistrer une image depuis une URL PHP sur mon PC. Disons que j'ai une page, http://example.com/image.php
, tenant une seule image "fleur", rien d'autre. Comment puis-je sauvegarder cette image de l'URL avec un nouveau nom (en utilisant PHP)?Enregistrement de l'image depuis PHP URL
Répondre
Si vous avez allow_url_fopen
ensemble à true
:
$url = 'http://example.com/image.php';
$img = '/my/folder/flower.gif';
file_put_contents($img, file_get_contents($url));
utiliser Else cURL:
$ch = curl_init('http://example.com/image.php');
$fp = fopen('/my/folder/flower.gif', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
$content = file_get_contents('http://example.com/image.php');
file_put_contents('/my/folder/flower.jpg', $content);
La page tient une image GIF animée. Un fichier est stocké dans le dossier comme fleur.gif. Mais il est vide.Pas d'image montre.une solution? – riad
Activez error_reporting (E_ALL | E_STRICT) et vérifiez la valeur de retour de file_get_contents(), vous devriez alors recevoir un message d'erreur raisonnable. – soulmerge
Peut-être que l'administrateur du site a interdit les références externes. Dans ce cas, vous pouvez essayer stream_context_create() et définir les en-têtes HTTP appropriés. http://us2.php.net/manual/fr/function.stream-context-create.php – Calvin
Ici, vous allez, l'exemple enregistre l'image à distance image.jpg.
function save_image($inPath,$outPath)
{ //Download images from remote server
$in= fopen($inPath, "rb");
$out= fopen($outPath, "wb");
while ($chunk = fread($in,8192))
{
fwrite($out, $chunk, 8192);
}
fclose($in);
fclose($out);
}
save_image('http://www.someimagesite.com/img.jpg','image.jpg');
Je n'ai pas pu obtenir l'une des autres solutions pour travailler, mais j'ai pu utiliser wget:
$tempDir = '/download/file/here';
$finalDir = '/keep/file/here';
$imageUrl = 'http://www.example.com/image.jpg';
exec("cd $tempDir && wget --quiet $imageUrl");
if (!file_exists("$tempDir/image.jpg")) {
throw new Exception('Failed while trying to download image');
}
if (rename("$tempDir/image.jpg", "$finalDir/new-image-name.jpg") === false) {
throw new Exception('Failed while trying to move image file from temp dir to final dir');
}
Créez un dossier nommé images situées dans le chemin que vous prévoyez de Placez le script PHP que vous êtes sur le point de créer. Assurez-vous qu'il a des droits en écriture pour tout le monde sinon les scripts ne fonctionneront pas (il ne pourra pas télécharger les fichiers dans le répertoire).
Vartec's answer avec cURL n'a pas fonctionné pour moi. Il a fait, avec une légère amélioration en raison de mon problème spécifique.
par exemple,
Quand il y a une redirection sur le serveur (comme lorsque vous essayez d'enregistrer l'image de profil facebook) vous l'option besoin suivant jeu:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
La solution complète devient:
$ch = curl_init('http://example.com/image.php');
$fp = fopen('/my/folder/flower.gif', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
curl_close($ch);
fclose($fp);
merci zuul, vraiment & stoe vraiment trouvé utile après plus de recherche ou passer du temps –
brillant - qui a tellement aidé! Doit être noté sur la réponse Vartecs aussi – Nick
$img_file='http://www.somedomain.com/someimage.jpg'
$img_file=file_get_contents($img_file);
$file_loc=$_SERVER['DOCUMENT_ROOT'].'/some_dir/test.jpg';
$file_handler=fopen($file_loc,'w');
if(fwrite($file_handler,$img_file)==false){
echo 'error';
}
fclose($file_handler);
copy('http://example.com/image.php', 'local/folder/flower.jpg');
Extrêmement élégant (nécessite 'allow_url_fopen'). – Iiridayn
Cela ne garde pas PNG Transparence –
Je n'allais pas aller, juste l'ajoutant si les utilisateurs viennent à cette page à l'avenir, ils verront :) Il est cependant une solution très élégante –
Voir file()
PHP Manual:
$url = 'http://mixednews.ru/wp-content/uploads/2011/10/0ed9320413f3ba172471860e77b15587.jpg';
$img = 'miki.png';
$file = file($url);
$result = file_put_contents($img, $file)
need allow_url_fopen = Sur – zloctb
vous n'utilisez jamais $ img? –
- 1. Créer une URL depuis HtmlHelper
- 2. Ouvrir une URL depuis l'application iPhone
- 3. Accès à une URL depuis l'application Windows
- 4. Comment envoyer une requête GET depuis PHP?
- 5. PHP méthode d'encodage URL
- 6. Enregistrement d'un gestionnaire de protocole URL personnalisé reconnu par Outlook?
- 7. Chargement et enregistrement de fichier php
- 8. récupérer window.location.hash url en php
- 9. PHP str_replace à l'adresse URL
- 10. Renommage URL PHP avec HTACCESS
- 11. Quand urllib2 télécharge-t-il un fichier depuis une URL?
- 12. PHP localhosting et enregistrement des tests en utilisant wampserver?
- 13. Authentification d'utilisateur utilisant LDAP depuis PHP
- 14. Enregistrement à partir du microphone depuis le navigateur à l'aide de flex ou de traitement
- 15. Ressource pour reconnaître le framework/CMS depuis une URL ou d'autres indices?
- 16. Enregistrement de l'ordre d'une liste (php/zend/jquery)
- 17. enregistrement actif: créer un enregistrement à partir de l'objet parent
- 18. PHP Script pour exécuter plusieurs URL?
- 19. PHP - url-address pour send-script
- 20. isoler une partie d'un URL avec php
- 21. URL comme une variable en PHP
- 22. URL Regex pour le framework PHP
- 23. isoler une partie d'une URL avec php
- 24. Comment implémenter le routage URL en PHP
- 25. Après une RewriteRule à un script PHP, faire une redirection interne depuis le PHP
- 26. Comment obtenir toutes les URL de la page (php)
- 27. POST XML vers URL avec PHP et réponse de poignée
- 28. Google Calendar PHP - URL/ID de l'événement? (Zend_Gdata)
- 29. Bonnes pratiques pour envoyer des mails depuis PHP via smtp?
- 30. Comment exporter une image depuis swf avec ActionScript3/PHP?
Merci mon frère, votre code m'aider à résoudre le problème. Mais je pourrais m'aider à rendre le script automatisé. Je veux dire quand une nouvelle image gif arrive à l'url ("http://example.com/image.php") alors notre script récupère automatiquement la nouvelle image et la stocke sur mon répertoire? – riad
Et comment savez-vous que la nouvelle image est "venue"? – vartec
Je pense que riad signifie utiliser une variable '$ _GET' contenant l'URL de l'image' http: //example.com/fetch-image.php? Url = http: // blabla.com/flower.jpg'. Dans le cas de cet exemple, vous pouvez juste appeler '$ _GET ['url']' dans votre script PHP, comme ceci: '$ ch = curl_init ($ _ GET ['url']);'. –