Underc0de

Programación Web => Back-end => Mensaje iniciado por: Xt3mP en Abril 20, 2012, 02:45:22 AM

Título: Descargar imagenes externas con PHP y cURL
Publicado por: Xt3mP en Abril 20, 2012, 02:45:22 AM
A veces nos vemos en la necesidad de utilizar imágenes externas pero por x  o por y motivos es imposible emplearlas en nuestros sitios web ya que la seguridad o la configuración de donde esta alojada la imagen ha desactivado la accesibilidad mediante el archivo .htaccess (generalmente) o porque el hosting en cuestión a veces no esta en "la nube" haciendo que nuestra página quede con un mal terminado ya que dependemos de imagenes externas (válgame la redundancia).

Entonces, lo más coherente sería descargar las imagenes para no depender de páginas externas que como ya expliqué anteriormente, algún día sin previo aviso pueden dejarnos tirados; y para ello utilizarémos el lenguaje PHP y cURL (librería para trabajar con servidores):

Código (php) [Seleccionar]
<?php
/*
* Descargar imagenes externas con PHP y cURL
* Xt3mP
[email protected]
*/
function descargarImagen($urlImagen$target$directorioBase)
{
    
$ch curl_init();
    
curl_setopt($chCURLOPT_URL$urlImagen);
    
curl_setopt($chCURLOPT_HEADER0);
    
curl_setopt($chCURLOPT_RETURNTRANSFER1);
    
$imagen curl_exec($ch);
    
curl_close($ch);
    
$archivo = @fopen($directorioBase.$target'w');
    if(
$archivo)
    {
        echo 
'La imagen '.basename($urlImagen).' ha sido descargada a '.$directorioBase.$target;
        @
fwrite($archivo$imagen);
        @
fclose($archivo);
    }else{
        echo 
'La imagen '.basename($urlImagen).' no se ha sido podido descargar';
    }
}
descargarImagen('http://xt3mp.mx/wp-content/themes/Polished/images/logo.png''miimagen.png''./galeria/');
?>


Lo que hacemos príncipalmente es iniciar una sesión de cURL y se la asignamos a la variable ch, después agregamos la configuración: