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
  • 4617 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 = No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  10.     No tienes permisos para ver links. Registrate o Entra con tu cuenta($ch, CURLOPT_URL, $urlImagen);
  11.     No tienes permisos para ver links. Registrate o Entra con tu cuenta($ch, CURLOPT_HEADER, 0);
  12.     No tienes permisos para ver links. Registrate o Entra con tu cuenta($ch, CURLOPT_RETURNTRANSFER, 1);
  13.     $imagen = No tienes permisos para ver links. Registrate o Entra con tu cuenta($ch);
  14.     No tienes permisos para ver links. Registrate o Entra con tu cuenta($ch);
  15.     $archivo = @No tienes permisos para ver links. Registrate o Entra con tu cuenta($directorioBase.$target, 'w');
  16.     if($archivo)
  17.     {
  18.         echo 'La imagen '.No tienes permisos para ver links. Registrate o Entra con tu cuenta($urlImagen).' ha sido descargada a '.$directorioBase.$target;
  19.         @No tienes permisos para ver links. Registrate o Entra con tu cuenta($archivo, $imagen);
  20.         @No tienes permisos para ver links. Registrate o Entra con tu cuenta($archivo);
  21.     }else{
  22.         echo 'La imagen '.No tienes permisos para ver links. Registrate o Entra con tu cuenta($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 = No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  13.         No tienes permisos para ver links. Registrate o Entra con tu cuenta($ch, CURLOPT_URL, $urlImagen);
  14.         No tienes permisos para ver links. Registrate o Entra con tu cuenta($ch, CURLOPT_HEADER, 0);
  15.         No tienes permisos para ver links. Registrate o Entra con tu cuenta($ch, CURLOPT_RETURNTRANSFER, 1);
  16.         $imagen = No tienes permisos para ver links. Registrate o Entra con tu cuenta($ch);
  17.         No tienes permisos para ver links. Registrate o Entra con tu cuenta($ch);
  18.         $nombreDearchivo = $prefijo.No tienes permisos para ver links. Registrate o Entra con tu cuenta($urlImagen);
  19.         if($noRepetir === true && @No tienes permisos para ver links. Registrate o Entra con tu cuenta($directorioBase.$nombreDearchivo))
  20.         {
  21.             echo 'La imagen '.No tienes permisos para ver links. Registrate o Entra con tu cuenta($urlImagen).' ya existe en '.$directorioBase.$nombreDearchivo.'<br />';
  22.         }else{
  23.             $infoDearchivo = No tienes permisos para ver links. Registrate o Entra con tu cuenta($urlImagen);
  24.             while(@No tienes permisos para ver links. Registrate o Entra con tu cuenta($directorioBase.$nombreDearchivo))
  25.             {
  26.                 $nombreDearchivo = $prefijo.$infoDearchivo['filename'].$counter.'.'.$infoDearchivo['extension'];
  27.                 $counter++;
  28.             }
  29.             $archivo = @No tienes permisos para ver links. Registrate o Entra con tu cuenta($directorioBase.$nombreDearchivo, 'w');
  30.             if($archivo)
  31.             {
  32.                 echo 'La imagen '.No tienes permisos para ver links. Registrate o Entra con tu cuenta($urlImagen).' ha sido descargada a '.$directorioBase.$nombreDearchivo.'<br />';
  33.                 @No tienes permisos para ver links. Registrate o Entra con tu cuenta($archivo, $imagen);
  34.                 @No tienes permisos para ver links. Registrate o Entra con tu cuenta($archivo);
  35.             }else{
  36.                 echo 'La imagen '.No tienes permisos para ver links. Registrate o Entra con tu cuenta($urlImagen).' no se ha sido podido descargar.<br />';
  37.             }
  38.         }
  39.     }
  40. }
  41. $urlImagenes = No tienes permisos para ver links. Registrate o Entra con tu cuenta(
  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: 1564
Último mensaje Noviembre 04, 2013, 02:16:30 pm
por alexander1712
Crear imagenes desde base de datos Mysql

Iniciado por godmurdoc

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

Iniciado por hielasangre

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

Iniciado por Okol

Respuestas: 1
Vistas: 2873
Ú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: 6294
Último mensaje Noviembre 21, 2012, 11:21:38 pm
por motorxua