Foros del Web » Programando para Internet » PHP »

Guardar una imagen con cURL mediante https

Estas en el tema de Guardar una imagen con cURL mediante https en el foro de PHP en Foros del Web. Hola a todos, estoy intentando si consigo poder descargar imágenes que estan en servidores https utilizando cURL. He leído varios sitios en Internet pero no ...
  #1 (permalink)  
Antiguo 14/09/2016, 16:31
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años, 1 mes
Puntos: 3
Pregunta Guardar una imagen con cURL mediante https

Hola a todos, estoy intentando si consigo poder descargar imágenes que estan en servidores https utilizando cURL. He leído varios sitios en Internet pero no lo consigo.

El código que tengo es el siguiente:

Código PHP:
Ver original
  1. function cogerImagen($url_origen,$archivo_destino){
  2.    
  3.     $curl = curl_init ($url_origen);
  4.     $fs_archivo = fopen ($archivo_destino, "w");
  5.     curl_setopt ($curl, CURLOPT_FILE, $fs_archivo);
  6.     curl_setopt ($curl, CURLOPT_HEADER, 0);
  7.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  8.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  9.     curl_exec ($curl);
  10.     curl_close ($curl);
  11.     fclose ($fs_archivo);
  12. }
  13.  
  14.  
  15. cogerImagen('https://images-na.ssl-images-amazon.com/images/I/511zpEl8PYL.jpg', 'imagenes/imagen.jpg');

He puesto una imagen alojada en Amazon, si ejecuto esto se me crea un archivo en la ruta especificada, pero no se puede abrir, da un error. Por el contrario si cambio la direccion a una imágen que no está alojada en https la descarga corectamente.

¿Alguien tiene alguna idea de lo que falla?

Un saludo
  #2 (permalink)  
Antiguo 14/09/2016, 19:27
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: Guardar una imagen con cURL mediante https

La verdad nose, pero se me ocurre por que es https y se supone que esta cifrado o algo asi. seguiré investigando
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #3 (permalink)  
Antiguo 15/09/2016, 08:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Guardar una imagen con cURL mediante https

Hola minombreesmm, si debe ser por que está cifrado, pero según algunos post que he leído en inglés con el código de arriba debería funcionar pero no es así.

La verdad es que encuentro muy poca información respecto al tema, hay mucha para servidores que no usan SSL pero para los que están cifrados bastante poca. A ver si alguien más experto sabe si se puede hacer.

Un saludo
  #4 (permalink)  
Antiguo 16/09/2016, 06:27
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Guardar una imagen con cURL mediante https

Y si ya sabes la ruta de la imagen por qué no usar copy directamente

Código PHP:
copy('https://images-na.ssl-images-amazon.com/images/I/511zpEl8PYL.jpg''./imagenes/imagen.jpg'); 
__________________
Unset($vida['malRollo']);
  #5 (permalink)  
Antiguo 16/09/2016, 06:43
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Guardar una imagen con cURL mediante https

Porque usando copy no funciona, me lanza el siguiente error:


Warning: copy(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /opt/lampp/htdocs/pruebas/imagenes.php on line 20

Warning: copy(): Failed to enable crypto in /opt/lampp/htdocs/pruebas/imagenes.php on line 20

Warning: copy(https://images-na.ssl-images-amazon....zpEl8PYL.jpg): failed to open stream: operation failed in /opt/lampp/htdocs/pruebas/imagenes.php on line 20


Un saludo
  #6 (permalink)  
Antiguo 16/09/2016, 08:22
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Guardar una imagen con cURL mediante https

Prueba a pasarle una envoltura para que no verifique la conexion.

Código PHP:
$contextoEnvoltura=array(
    
"ssl"=>array(
        
"verify_peer"=>false,
        
"verify_peer_name"=>false,
    ),
);  

copy
(
    
'https://images-na.ssl-images-amazon.com/images/I/511zpEl8PYL.jpg'
    
'./imagenes/imagen.jpg'
    
stream_context_create($contextoEnvoltura)
); 
__________________
Unset($vida['malRollo']);
  #7 (permalink)  
Antiguo 16/09/2016, 09:17
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Guardar una imagen con cURL mediante https

Muchas gracias xerifandtomas, ahora si que funciona.

Un abrazo
  #8 (permalink)  
Antiguo 16/09/2016, 09:29
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Guardar una imagen con cURL mediante https

Jajaja, me alegro que funcione!

A veces nos complicamos la vida con soluciones tediosas sin darnos cuenta.

Con tu agradecimiento y un +1, soy más feliz que una perdiz, jajaja.
__________________
Unset($vida['malRollo']);

Etiquetas: curl, https
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:18.