Obtener el tamaño de un archivo remoto usando PHP

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 🙂

12 comentarios para “Obtener el tamaño de un archivo remoto usando PHP”

Gracias por compartir tu opinión en esta nota

Para que tu avatar aparezca en los comentarios de este y otros blogs debes ser usuario registrado en Gravatar, puedes registrarte en el siguiente enlace: http://en.gravatar.com/site/signup
Stay Geek!

Deja un comentario

Sitios Amigos
Únete en Facebook
Síguenos en Twitter
Publicaciones Favoritas