PHP: Copiar imágenes de un servidor remoto al nuestro

Published on : 18 enero, 2016
2 comments

Cuando realizamos una web, es conveniente no tener las imágenes en servidores de terceros, sino en nuestros propios servidores, o en un CDN. ¿Cómo descargamos las imágenes de otro servidor?

Podemos hacerlo de varias formas:

$url = "http://www.dominio.inicial/imagen.png";
$dir = "/var/www/directorio/fisico/en/nuestro/server/local/";

$archivoInicial = fopen($url, "r");
$archivoFinal   = fopen($dir . basename($url), "w");

while(!feof($url)) 
    fwrite($archivoFinal, fread($archivoInicial, 1), 1);

fclose($archivoFinal);
fclose($archivoInicial);

O:

$imagen = file_get_contents("http://www.dominio.es/imagen.png");
$save = file_put_contents('/var/www/directorio/servidor/destino/imagen.png',$imagen);

Y la más eficiente de todas, si tenemos que descargar muchas imágenes, es hacerlo con cURL:

$url = "http://www.dominio.com/imagen.png";
$dir = "/var/www/directorio/local/";
$archivoFinal = fopen($dir . basename($url), "w");

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)');
curl_setopt($ch, CURLOPT_FILE, $archivoFinal);

fclose($archivoFinal);
curl_close($ch);

 

2 comments

    1. Silvia Suria Torres

      Si puedes explicar qué error te da, mejor, porque este código está en varias webs funcionando perfectamente.


XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.