Obtener el tamaño de un archivo remoto usando PHP
Hace días necesitaba obtener el tamaño en bytes de un archivo usando PHP, y pensé: «con la función filesize obtengo ese dato»; pero ¡oh sorpresa!, lo que no sabía es que filesize solo te permite obtener el tamaño de un archivo alojado en el mismo servidor, y yo necesitaba obtener el tamaño de un archivo remoto, en otro servidor.
Bueno, la situación anterior me llevo a escribir la siguiente función:
<?php function getRemoteFileSize($url) { $info = get_headers($url,1); if (is_array($info['Content-Length'])) { $info = end($info['Content-Length']); } else { $info = $info['Content-Length']; } return $info; } ?>
Su uso es muy simple, sería de la siguiente manera:
<?php $file = 'http://www.google.com.mx/intl/es_mx/images/logo.gif'; echo getRemoteFileSize($file); // Devuelve 8896 ?>
Aquí pueden ver que el tamaño del logo de Google es de 8,896 bytes y que el resultado de mi función es correcto.
Algunos puntos interesantes:
- Mi función getFileSize devuelve el tamaño en bytes
- La función durará lo mismo para obtener el tamaño de un archivo ya sea de 1 MB o de 1 GB
- No importa si el archivo que estamos solicitando sufre alguna redirección (por htaccess por ejemplo), la función devolverá el tamaño del archivo destino, no el de las redirecciones
Saludos 🙂
Y para qué te sirve saber el tamaño de una foto? =O
Por si tienes una opción para que los usuarios suban imágenes al server mediante URL, con esto puedes saber si la imagen sobrepasa el tamaño permitido para subirla. PHP solo permite archivos de hasta 2MB si lo haces sin FTP.
hay amigo que preguntas tan bobas haces.
La foto fue solo para ilustrar el post. En realidad yo necesitaba calcular el tamaño de un mp3 en otro servidor.
¿Y para qué necesitabas calcular el tamaño de un mp3 de un servidor remoto?
la verdad demasiado interesante!estaba buscando algo de eso un abrazo gracias
Un gusto haberte ayudado.
Saludos.
Gracias Davemm por compartir conocimiento, muy buen script!
muchisimas gracias, la verdad s lo ke nesesito, solo que por alguna razon nno me devuelve ningun resultado 🙁
mi archivo remoto es un .pls d 60bytes,
Pasame el link de donde esta alojado el archivo para ver que onda …
Muchas Gracias, ami si me sirvió, pude calcular el tamaño de un .rar que se encuentra en otro servidor.
el tamaño es muy grande, ¿como hago para abreviarlo? ¿o por lo menos separarlo con puntos?