Foros del Web » Programando para Internet » PHP »

Descargar una imagen sin visualizarla.

Estas en el tema de Descargar una imagen sin visualizarla. en el foro de PHP en Foros del Web. Buen día a todos. Mi problema es el siguiente: tengo que hacer la descarga de una imagen de una dirección X (http://upload.wikimedia.org/wikipedia/commons/4/40/Apatosaurus.gif) y medir el ...
  #1 (permalink)  
Antiguo 20/03/2010, 10:10
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Exclamación Descargar una imagen sin visualizarla.

Buen día a todos. Mi problema es el siguiente:

tengo que hacer la descarga de una imagen de una dirección X (http://upload.wikimedia.org/wikipedia/commons/4/40/Apatosaurus.gif) y medir el tiempo y tasa de descarga. La cosa es que, siempre que quiero hacerlo, la visualizo y no descargo. He leido algo acerca de los header, pero no me ha quedado claro.

Espero alguien pueda ayudarme.

Gracias.
  #2 (permalink)  
Antiguo 20/03/2010, 10:53
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 9 meses
Puntos: 5
Respuesta: Descargar una imagen sin visualizarla.

Hola,

Para forzar la descarga Intenta con esto

Saludos,
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
  #3 (permalink)  
Antiguo 20/03/2010, 10:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Descargar una imagen sin visualizarla.

¿Tu quieres pasar la imagen a otro dominio? Si es así tienes que usar cURL o algún socket para leer la imagen y luego bajarla, mira este ejemplo http://www.forosdelweb.com/f18/aport...4/#post3061461
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 20/03/2010, 11:57
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
De acuerdo trabajo en ello....

Gracias por responder tan pronto ...

abimaelrc, lo que necesito es, de esa dirección que puse, descargar la imagen y calcular el tiempo de descarga así como la tasa de transferencia.... la descargaré a mi máquina, es untest, para otra situación que se me avecina más adelante....

estoy ya trabajando en las opciones que me han dado.... En cuanto tenga un resultado se los comentaré...
  #5 (permalink)  
Antiguo 22/03/2010, 10:37
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Exclamación Respuesta: Descargar una imagen sin visualizarla.

Gracias a los dos, me han dado unas respuestas estupendas, ahora bien, lo que necesito es calcular el tiempo de descarga... Lo hago con microtime(), y eso ya lo tengo hehco, el cálculo del tiempo final - el inicial de x proceso... Lo que no puedo hacer es, que las dos operaciones (descarga de la imagen y calcular el tiempo) funcionen conjuntamente,,,, Traté de hacerlo mediante una función, pero nada, no funciona....

el código que utilizo es el siguiente:

Código PHP:
<?php

    
function tiempo($segundos// Función para formatear la impresión del tiempo
        
{
            
$minutos=$segundos/60;
            
$horas=floor($minutos/60);
            
$minutos2=$minutos&#37;60;
            
$segundos_2=$segundos%60%60%60;
            if(
$minutos2<10)$minutos2='0'.$minutos2;
            if(
$segundos_2<10)$segundos_2='0'.$segundos_2;        
            if(
$segundos<60)
                { 
/* segundos */
                    
$resultadoround($segundos,3).' Segundos';
                }
            elseif(
$segundos>60 && $segundos<3600)
                {
/* minutos */
                    
$resultado$minutos2.':'.round($segundos_2,2).' Minutos';
                }else
                    {
/* horas */
                        
$resultado$horas.':'.$minutos2.':'.round($segundos_2,2).' Horas';
                    }
            return 
$resultado;
        }    
        
    function 
descarga()
        {
            if(isset(
$_REQUEST['prueba.jpeg']))
                {
                    
$imagen $_REQUEST['prueba.jpeg'];
                    
header("Content-Disposition: attachment; filename=".$imagen);
                    
header("Content-Length: ".filesize($imagen));
                    
header("Content-Type: application/octet-stream; name=".$imagen);
                    
readfile($imagen);
                }
        }
        
    
$nex $_POST['num']; //dato capturado que representa el número de veces que se va a repetir el proceso de descarga
    //$entrada = $nex * 71680;
    
$entrada $nex;
    
$entradap $entrada/1024;
    
    echo 
'Se descargan '.$nex.' exámenes. ('.$entradap.' Kb)<br>';
    
    
set_time_limit(0); 
    
    
$tiempo_micro[1]= microtime();
    
$q_espacios explode(" ",$tiempo_micro[1]);
    
$tiempo_[1]= $q_espacios[1]+$q_espacios[0];
        
    
descarga();      // *** ¿Es correcto hacerlo de esta manera?
    
    
$tamano_KB $entrada;

    
$tiempo_micro[2] = microtime();
    
$q_espaciosexplode(" ",$tiempo_micro[2]);
    
$tiempo_[2] =$q_espacios[1]+$q_espacios[0];
    
$tiempo_utilizado number_format(($tiempo_[2]-$tiempo_[1]),5"." ,",");
    
    
$velocidad= ($tamano_KB/$tiempo_utilizado);
    
    
$velocidad round(($velocidad 1024),2);
    
    
$segundos $tiempo_utilizado;

    
//echo '<hr>Tiempo de conexión: '.tiempo($segundos).'<br>Velocidad: '.$velocidad.' Kb/s <hr>';
    
echo '<hr>Tiempo de conexión: '.tiempo($segundos).'<br>Velocidad: '.$velocidad.' Kb/s <hr>';
    
?>
Ahora bien, nex (que es el número de exámenes que se deben de descargar) me definirá cuántas veces se va a descargar esa imagen fija que tengo como ejemplo. ¿Cómo le puedo hacer para lograr esto?

Les agradezco la ayuda.

Última edición por JavierMMM; 22/03/2010 a las 11:15

Etiquetas: Ninguno
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:52.