comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Descargar imagenes externas con PHP y cURL

  • 0 Respuestas
  • 4533 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Xt3mP

  • *
  • Underc0der
  • Mensajes: 432
  • Actividad:
    0%
  • Reputación 0
  • Ellos me están buscando, pero yo los encontraré.
    • MSN Messenger - Xt3mP@h4x0rz.us
    • AOL Instant Messenger - Xt3mP@h4x0rz.us
    • Yahoo Instant Messenger - Xt3mP@h4x0rz.us
    • Ver Perfil
    • 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
  1. <?php
  2. /*
  3. * Descargar imagenes externas con PHP y cURL
  4. * Xt3mP
  5. * xt3mp@null.net
  6. */
  7. function descargarImagen($urlImagen, $target, $directorioBase)
  8. {
  9.     $ch = You are not allowed to view links. Register or Login();
  10.     You are not allowed to view links. Register or Login($ch, CURLOPT_URL, $urlImagen);
  11.     You are not allowed to view links. Register or Login($ch, CURLOPT_HEADER, 0);
  12.     You are not allowed to view links. Register or Login($ch, CURLOPT_RETURNTRANSFER, 1);
  13.     $imagen = You are not allowed to view links. Register or Login($ch);
  14.     You are not allowed to view links. Register or Login($ch);
  15.     $archivo = @You are not allowed to view links. Register or Login($directorioBase.$target, 'w');
  16.     if($archivo)
  17.     {
  18.         echo 'La imagen '.You are not allowed to view links. Register or Login($urlImagen).' ha sido descargada a '.$directorioBase.$target;
  19.         @You are not allowed to view links. Register or Login($archivo, $imagen);
  20.         @You are not allowed to view links. Register or Login($archivo);
  21.     }else{
  22.         echo 'La imagen '.You are not allowed to view links. Register or Login($urlImagen).' no se ha sido podido descargar';
  23.     }
  24. }
  25. descargarImagen('http://xt3mp.mx/wp-content/themes/Polished/images/logo.png', 'miimagen.png', './galeria/');
  26. ?>

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:

  • CURLOPT_URL: Dirección URL en cuestión.
  • CURLOPT_HEADER: Header en cuestión (lo cambiamos a false ya que viene true por default).
  • CURLOPT_RETURNTRANSFER: Devolvemos el resultado en string (lo cambiamos a true ya que viene false por default).

Al final, le asignamos a la variable imagen el resultado de la petición cURL para posteriormente abrir la nueva imagen tomando en cuenta los parámetros que le pasamos a la función descargarImagen:

  • urlImagen: URL de la imagen en cuestión.
  • target: Nombre de imagen.
  • directorioBase: Directorio donde se guardará la imagen en cuestión.


Luego de esto, el script mostrará un mensaje de success o de failure, según sea el caso. Esta función se deberá hacer manual para cada cada imagen que deseemos descargar por lo que me tome la libertad de hacer una función un poco más compleja que te permite descargar imágenes juntas con el nombre original o el asignado:

Código: PHP
  1. <?php
  2. /*
  3. * Descargar imagenes externas con PHP y cURL
  4. * Xt3mP
  5. * xt3mp@null.net
  6. */
  7. function descargarImagen($urlImagenes, $noRepetir = true, $directorioBase, $prefijo = null)
  8. {
  9.     foreach($urlImagenes as $id => $urlImagen)
  10.     {
  11.         $counter = 1;
  12.         $ch = You are not allowed to view links. Register or Login();
  13.         You are not allowed to view links. Register or Login($ch, CURLOPT_URL, $urlImagen);
  14.         You are not allowed to view links. Register or Login($ch, CURLOPT_HEADER, 0);
  15.         You are not allowed to view links. Register or Login($ch, CURLOPT_RETURNTRANSFER, 1);
  16.         $imagen = You are not allowed to view links. Register or Login($ch);
  17.         You are not allowed to view links. Register or Login($ch);
  18.         $nombreDearchivo = $prefijo.You are not allowed to view links. Register or Login($urlImagen);
  19.         if($noRepetir === true && @You are not allowed to view links. Register or Login($directorioBase.$nombreDearchivo))
  20.         {
  21.             echo 'La imagen '.You are not allowed to view links. Register or Login($urlImagen).' ya existe en '.$directorioBase.$nombreDearchivo.'<br />';
  22.         }else{
  23.             $infoDearchivo = You are not allowed to view links. Register or Login($urlImagen);
  24.             while(@You are not allowed to view links. Register or Login($directorioBase.$nombreDearchivo))
  25.             {
  26.                 $nombreDearchivo = $prefijo.$infoDearchivo['filename'].$counter.'.'.$infoDearchivo['extension'];
  27.                 $counter++;
  28.             }
  29.             $archivo = @You are not allowed to view links. Register or Login($directorioBase.$nombreDearchivo, 'w');
  30.             if($archivo)
  31.             {
  32.                 echo 'La imagen '.You are not allowed to view links. Register or Login($urlImagen).' ha sido descargada a '.$directorioBase.$nombreDearchivo.'<br />';
  33.                 @You are not allowed to view links. Register or Login($archivo, $imagen);
  34.                 @You are not allowed to view links. Register or Login($archivo);
  35.             }else{
  36.                 echo 'La imagen '.You are not allowed to view links. Register or Login($urlImagen).' no se ha sido podido descargar.<br />';
  37.             }
  38.         }
  39.     }
  40. }
  41. $urlImagenes = You are not allowed to view links. Register or Login(
  42.                 'http://xt3mp.mx/wp-content/themes/Polished/images/logo.png',
  43.                 'http://xt3mp.mx/wp-content/themes/Polished/images/logo.png',
  44.                 'http://xt3mp.mx/wp-content/themes/Polished/images/logo.png',
  45.                 'http://xt3mp.mx/wp-content/themes/Polished/images/logo.png'
  46. );
  47. descargarImagen($urlImagenes, true, './galeria/', 'xt3mp_');
  48. ?>

En este caso recibimos 4 (cuatro) parámetros:

  • urlImagenes: Contiene las direcciones de las imagenes mediante un array.
  • noRepetir: Viene en true determinadamente; cambiarlo a false si se requiere que se guarden las imagenes aunque ya existan pero con diferente nombre (ej: foto1.png, foto2.png, foto3.png, fotox.png).
  • directorioBase: Directorio donde se guardará la imagen en cuestión.
  • prefijo: Prefijo para cada imagen (ej: xt3mp_foto1.png); no es obligatorio (dejarlo vacío si no se requiere).

Y bueno, con esto ya podrían descargar cómodamente sus imágenes externas y guardarlas en la carpeta que mejor lo crean conveniente.
« Última modificación: Octubre 25, 2013, 11:37:15 pm por Expermicid »
Cada vez que me das Karma me motivas

 

¿Te gustó el post? COMPARTILO!



FileClass (subir y descargar archivos)

Iniciado por alexander1712

Respuestas: 3
Vistas: 1524
Último mensaje Noviembre 04, 2013, 02:16:30 pm
por alexander1712
Crear imagenes desde base de datos Mysql

Iniciado por godmurdoc

Respuestas: 2
Vistas: 1411
Último mensaje Julio 03, 2011, 06:10:46 pm
por godmurdoc
Utilizar imagenes encodeadas en base64

Iniciado por hielasangre

Respuestas: 1
Vistas: 1038
Último mensaje Agosto 26, 2011, 09:35:36 pm
por ~ Yoya ~
Como juntar 2 imagenes en php

Iniciado por Okol

Respuestas: 1
Vistas: 2789
Último mensaje Octubre 07, 2012, 01:34:02 pm
por Sanko
Proyecto scam de Rapidgator con Curl (faltan detalles)

Iniciado por motorxua

Respuestas: 12
Vistas: 6222
Último mensaje Noviembre 21, 2012, 11:21:38 pm
por motorxua