Ver Mensaje Individual
  #11 (permalink)  
Antiguo 10/10/2003, 09:01
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Código PHP:
<?php
// lees tu archivo remoto ..
$url='http://www.handyzone.com/galerias/logos/amor/1028.gif';
$fp fopen($url,'rb');
$archivo fread ($fpfilesize ($url));

// GUARDAS tu $archivo (variable)
$fp=fopen('imagen_remota.gif','w');  // abrir archivo en modo binario "rb" ..
fwirte($fp,$archivo); // escribir ...
fclose($fp); // cerrar archivo ..
?>
El problema es que filesize() NO devuelve valor en llamadas externas (que pasen por http:// ) sólo en locales (archivo.tal directo) .. Si conoces el tamaño (en bytes) de ese archivo .. puedes indicarlo en el segundo parámetro de fread() y fucionaría correctamente (en teoría).

Pero, con este código que simula una conexión HTTP normal .. puedes obtener el tamaño de un archivo remoto:

Créditos: http://www.iezzi.ch/snippets/003_fsize.php

(traducido a función):

Código PHP:
<?php

function filesize_externo($u){

$ourhead "";
$url=parse_url($u); 
$host=$url["host"]; 
$path=$url["path"]; 

$fp fsockopen($host80, &$errno, &$errstr20); 
if(!
$fp) { 
    echo(
"error"); 
    exit (); 
} else { 
    
fputs($fp,"HEAD $u HTTP/1.1\r\n"); 
    
fputs($fp,"HOST: dummy\r\n"); 
    
fputs($fp,"Connection: close\r\n\r\n"); 

    while (!
feof($fp)) { 
        
$ourhead sprintf("%s%s"$ourheadfgets ($fp,128)); 
    }

fclose ($fp);

$split_head explode("Content-Length: ",$ourhead);
$size round(abs($split_head[1])/1024);
return  
$size;
}
?>
Así que el código superior que te dejé tendrías que sustituir:

Código PHP:
$archivo fread ($fpfilesize ($url)); 
por

Código PHP:
$archivo fread ($fpfilesize_externo ($url)); 
Y .. debería ir. Ya nos contaras.

Un saludo,



Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 10/10/2003 a las 09:29