Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: fary en 14 Enero 2010, 00:30 am



Título: Saber peso de un archivo con filesize
Publicado por: fary en 14 Enero 2010, 00:30 am
Hola buenas, queria saber si con Filesize podria saber el peso de un archivo que no esta en mi web, por ejemplo, podria obtener el peso de un video de youtube?

salu2!, esperando respuesta.


Título: Re: Saber peso de un archivo con filesize
Publicado por: дٳŦ٭ en 14 Enero 2010, 00:52 am
No, para saber el peso del archivo lo tienes que descargar.


Título: Re: Saber peso de un archivo con filesize
Publicado por: fary en 14 Enero 2010, 15:30 pm
Entonces no es posible, saber el peso de un archivo que este online???

salu2!


Título: Re: Saber peso de un archivo con filesize
Publicado por: Hendrix en 14 Enero 2010, 19:32 pm
Puedes hacerlo con una petición HTTP HEAD al sitio en cuestión.

Un Ejemplo de como podrías hacerlo: http://www.grumet.net/weblog/archives/http-head-example.html

En el Content-Lenght tienes el peso de la pagina/archivo.

Tendras que usar cURL para ello, aqui tienes la busqueda: http://www.google.es/#hl=es&source=hp&q=curl+http+head+request

Un Saludo  :)


Título: Re: Saber peso de un archivo con filesize
Publicado por: Hendrix en 14 Enero 2010, 21:52 pm
Te e codeado estas 2 funciones, son algo sencillas. No te fijes en los fallos que puede tener, sino en la idea y en como uso el HTTP HEAD.

Código
  1. function HeadRequest($url)
  2. {
  3. $ch = curl_init();
  4. curl_setopt($ch, CURLOPT_URL, $url);
  5. curl_setopt($ch, CURLOPT_HEADER, 1);
  6. curl_setopt($ch, CURLOPT_NOBODY, 1);
  7. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8.  
  9. $r = curl_exec($ch);
  10.  
  11. return $r;
  12. }
  13.  
  14. function ObtenerPeso($url)
  15. {
  16. $pag = HeadRequest($url);
  17. $pos = strpos($pag, "Content-Length");
  18. if($pos === false)
  19. {
  20. return "No se pudo obtener el peso...";
  21. }
  22. $primero = explode("Content-Length: ",$pag);
  23. $segundo = explode("\r\n",$primero[1]);
  24. return $segundo[0]." Bytes";
  25. }
  26.  
  27. $url = $_GET["url"];
  28.  
  29. echo("Sacando peso de $url...<br>");
  30. $peso = ObtenerPeso($url);
  31. echo("El archivo pesa: $peso");
  32. ?>

Ejemplo de uso:

http://localhost/prueba.php?url=www.elhacker.net/jasildbg/JaSiLDBG_es.pdf

Resultado:

Citar
Sacando peso de www.elhacker.net/jasildbg/JaSiLDBG_es.pdf...
El archivo pesa: 317815 Bytes

Un Saludo  :)