Foros del Web » Programando para Internet » PHP »

descarga imagenes con ruta automatica

Estas en el tema de descarga imagenes con ruta automatica en el foro de PHP en Foros del Web. buenas. ¡feliz año y todo eso! a ver, tengo pendiente hacer lo siguiente: En un formulario, introduzco una url de una imagen (por ejemplo: www.dominioajeno.com/imagenes/357/foto.jpg ...
  #1 (permalink)  
Antiguo 09/01/2009, 08:45
 
Fecha de Ingreso: noviembre-2006
Mensajes: 51
Antigüedad: 18 años
Puntos: 0
Exclamación descarga imagenes con ruta automatica

buenas.
¡feliz año y todo eso!

a ver, tengo pendiente hacer lo siguiente:

En un formulario, introduzco una url de una imagen (por ejemplo: www.dominioajeno.com/imagenes/357/foto.jpg), pues bien, lo que quiero es que me descarge esa foto, en ese mismo directorio pero en mi servidor, creandolo si no existe, es decir, que yo simplemente ponga la url de arriba (www.dominioajeno.com/imagenes/357/foto.jpg) y me la descargue en mi servidor y sea accesible desde (www.midominio.com/imagenes/357/foto.jpg)

Alguien tiene alguna idea para hacer eso?
Saludos y muchas gracias.
Cuidense!
  #2 (permalink)  
Antiguo 09/01/2009, 10:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: descarga imagenes con ruta automatica

Hola lordjohnny,

Para eso debes de hacer un cliente HTTP, usando fsockopen, o cURL.

Saludos.
  #3 (permalink)  
Antiguo 09/01/2009, 11:12
 
Fecha de Ingreso: febrero-2006
Mensajes: 134
Antigüedad: 18 años, 9 meses
Puntos: 10
Respuesta: descarga imagenes con ruta automatica

Si usas en linux, puedes utilizar wget (comando).
Para usarlo en PHP simplemente
Código PHP:
system('wget --background  -a logs.txt -O '.$tuRutaLocal.'  '.$URLRemota); 
Tal vez sea más rápido que cURL. De eso si que no estoy seguro.
__________________
Si te ha gustado lo que he dicho, puedes darme algún punto de reputación, que no te cuesta nada ^_^.

Di no a los juicios de valor!
  #4 (permalink)  
Antiguo 09/01/2009, 19:25
 
Fecha de Ingreso: noviembre-2006
Mensajes: 51
Antigüedad: 18 años
Puntos: 0
Vale, he hecho lo de santhy y funciona bien, pero lo que ahora necesito es que si la url es: tudominio.com/directorio1/directorio2/archivo.jpg que me vaya creando esos "directorio1" y "directorio2" si no existe.
Ahora lo que me hace es descargarme el archivo en el lugar que yo le digo...

Existe alguna forma de indicarle a WGET que vaya creando los directorios?
Saludos y gracias

Ya lo conseguí con wget -x -nH perfecto muchas gracias.
Estoy intentando ahora, una vez tenemos la url deorigen es decir: http://www.tudominio.com/directorio1...o2/archivo.jpg, cambiar la parte "tudominio.com por "midominio.es/midirectorio"...

Estoy mirando con explode pero no me convence...
saludos

perfecto, conseguido, con wget he conseguido que me descargue el archivo donde yo quiera y creandome directorios
con explode he creado una variable con la parte de la cadena que no me interesa "http://dominiomalo.com", delimitandolo por las "/" y he sustituido la parte de la variable esa por "http://midominio.com/imagenes" y ahora funciona al pelo.

Muchisimas gracias a todos y un saludo

Queridos amigos, estoy contento ya que de la forma esta he conseguido quitarme mucho trabajo del medio, pero quedó de una forma muy chapuza.
Asi que, necesito asociar cada imagen a una "id"
Se la manera de hacerlo, pero estuve buscando y no encuentro la manera correcta de hacer lo siguiente:

de la url de origen tengo que extraer el nombre del fichero y cambiarle el cuerpo del nombre del archivo, es decir, SIN LA EXTENSION... paso a explicaros.

http://www.dominioorigen.com/dir1/dir2/foto.jpg

pues bien, necesito que extraiga esto:

"foto.jpg"

y ahora, cambiarle el nombre del archivo por uno que yo le indique de manera automatica, para que quedara así:

"32423.jpg"

el problema que tengo es que no se como demonios hacer eso, porque con un stristr() no sabría como delimitar para que me partiera del ULTIMO PUNTO de la cadena de texto (en este caso una url)

A ver si me podeis inspirar un poco.

Un saludo y gracias.

Última edición por GatorV; 11/01/2009 a las 13:11
  #5 (permalink)  
Antiguo 10/01/2009, 19:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: descarga imagenes con ruta automatica

Porque no usas explode() asi el ultimo elemento es el nombre del archivo y luego usas strpos para obtener la extension y construyes el nuevo nombre.

Saludos.
  #6 (permalink)  
Antiguo 11/01/2009, 03:13
 
Fecha de Ingreso: noviembre-2006
Mensajes: 51
Antigüedad: 18 años
Puntos: 0
Respuesta: descarga imagenes con ruta automatica

Vale, eso esta bien pero en el explode () como lo uso para que me de el ultimo elemento, porque claro, usaré distintas url, por ejemplo en:
http://dominio.com/dir1/dir2/archivo.jpg

si delimito por "/" seria el 6º elemento pero en:

http://dominio.com/archivo.jpg

seria el tercero no?

No se si me explico...

voy a seguir mirando a ver si vosotros me aclarais eso porque no se muy bien como tirar.
saludos y de nuevo, gracias
  #7 (permalink)  
Antiguo 11/01/2009, 03:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: descarga imagenes con ruta automatica

Código php:
Ver original
  1. $pedazos = explode("/", $ruta);
  2. $ultimo = $pedazos[count($pedazos - 1)];
  3. // o
  4. $ultimo = array_pop($pedazos);

Saludos
  #8 (permalink)  
Antiguo 11/01/2009, 03:37
 
Fecha de Ingreso: noviembre-2006
Mensajes: 51
Antigüedad: 18 años
Puntos: 0
ya lo hice, para encontrar el nombre del fichero utilice un explode() y lo mismo para la extension contando cuantos elementos contiene el array y seleccionando el ultimo
Ya estoy mas cerca de lo que quiero hacer, pena de que tengo que salir de viaje, sino lo dejaba todo listo ya
saludos y gracias

Cita:
Iniciado por GatorV Ver Mensaje
Código php:
Ver original
  1. $pedazos = explode("/", $ruta);
  2. $ultimo = $pedazos[count($pedazos - 1)];
  3. // o
  4. $ultimo = array_pop($pedazos);

Saludos
en contestado antes de ver tu post pero es exactamente igual, pero sin array_pop().
Estuve mirando para obtener de una bd, el valor Próxima Autoindex de un campo, pero no encontré nada, todo era referente hacer una consulta del ultimo registro y sumarle uno, pero eso ya lo tengo hecho y no me convence, porque si añado un registro (por ejemplo id 4, obtenido del ultimo 3+1), y me equivoco, lo borro, y al crear uno nuevo el sistema creara el registro con id 5, pero el php me dirá que sigue siendo el id 4. me explico?
gracias gracias

Última edición por GatorV; 11/01/2009 a las 13:11
  #9 (permalink)  
Antiguo 11/01/2009, 13:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: descarga imagenes con ruta automatica

Lo que puedes hacer es insertar un registro obtener el id autogenerado y hacer un UPDATE.

Saludos
  #10 (permalink)  
Antiguo 11/01/2009, 14:32
 
Fecha de Ingreso: noviembre-2005
Ubicación: Torreon Coahuila
Mensajes: 100
Antigüedad: 19 años
Puntos: 1
Respuesta: descarga imagenes con ruta automatica

Código PHP:
function descargar_archivos($url_descargar,$nombre_nuevo,$nombre_imagen,$tamano_archivo_guardado)
{

  if (@
fopen($url_descargar"r"))
    {
                    if(
$nombre_nuevo==NULL)
                {
                    
$titulo_archivo="Vacio_".$nombre_nuevo;
                }
                else
// contiene titulo
                
{
                    
$titulo_archivo=$nombre_nuevo;
                }
            
// carpeta con permisos 777
                
$carpeta_destino="descargas_imagenes/$titulo_archivo";
                
                
$tamano_a_descargar=filesize($carpeta_destino); // Checa el tamano del archivo
            
         
if($tamano_archivo_guardado==$tamano_a_descargar AND !empty($tamano_archivo_guardado))
         {
         }
        else
        {
            
                      
// Preparativos
              
$url_descargar str_replace(' ''%20'html_entity_decode($url_descargar)); // dando formato a url
              
if (file_exists($carpeta_destino)) 
              { 
                  
chmod($carpeta_destino0777); 
              } 
// añadir permiso de escritura
                            
                 
              // Inicia transferencia
              
if (($rh fopen($url_descargar'rb')) === FALSE
              { 
                  return 
false
              } 
// fopen() handles
            
              
if (($wh fopen($carpeta_destino'wb')) === FALSE
              { 
                  return 
false
              } 
// mensajes de error.
              
              
while (!feof($rh))
              {
                
// incapaz de escribir en el archivo, posiblemente debido a que el disco duro esta lleno
                
if (fwrite($whfread($rh1024)) === FALSE
                { 
                    
fclose($rh); 
                    
fclose($wh); 
                    return 
false
                }
                
              }
            
              
// Terminado sin errores
              
fclose($rh);
              
fclose($wh);
              @
chmod($carpeta_destino0777);
              
                echo
"<p>";
                
//echo "Tamano de archivo a descargar =  $tamano_a_descargar<br>";
                //echo "Tamano de archivo guardado = $tamano_archivo_guardado<br>";
                
echo "URL= $url_descargar<br>";
               
// echo "Guardado como = $nombre_nuevo<br>";
                
echo "imagen= $nombre_imagen<br><br>";
                echo 
"</p>";
        }
    } 
    else
    {
        echo
"<p>
        <font size='2' color='red'><b>No se pudo abrir o no existe la URL, favor de checarlo<br> "
;
        echo
" URL = $url_descargar <br>";
        echo
" Imagen=  $nombre_imagen </b></font></p>";
    } 

    
   
}


conectar();
        
$query="SELECT *";
        
$query.=" FROM tabla_imagenes";    
        
$query.=" ORDER BY id DESC";        
$query=mysql_query($query) or die(mysql_error());
$total=mysql_num_rows($query);
        if(
$total==0)
        {
            echo
"<p><label for='id_imagenes' class='left'>Imagenes:</label>";
            echo 
"No hay imagenes para actualizar";
            echo 
"</p>";
        } 
         else
         {
        echo
"<p><label for='id_imagenes' class='left'>Imagenes:</label></p>";  
        while (
$rs mysql_fetch_array($query))
              {  
                 
$url_descargar=trim($rs[URL_descarga]);
                 
$nombre_nuevo basename($url_descargar);        
                 
$nombre_imagen=trim(htmlentities($rs[nombre_imagen])); 
                 
$archivo_guardado="descargas_imagenes/$nombre_nuevo";
                 
$tamano_archivo_guardado=filesize($archivo_guardado);
descargar_archivos($url_descargar,$nombre_nuevo,$nombre_imagen,$tamano_archivo_guardado);
              } 
              echo
"<p><font size='2' color='green'><b>Actualizacion Finalizada</b></font></p>";  

        } 

Aqui tienes un ejemplo de la funcion que utilizo yo para descargar archivos desde un dominio hacia una carpeta de mi servidor, los archivos que descargo me se los nombres y los registro en la base de datos.
Echale un ojo al codigo y te servira
saludos...
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 14:04.