PHP: como obtener el tamaño de un fichero remoto

Si alguna vez necesitamos saber el tamaño de un fichero remoto (que no esta en nuestro propio servidor), podremos utilizar un par de sencillos métodos en php para averiguarlo

Hay varias formas de obtener el tamaño de un fichero remoto en php.

  • Utilizando las cabeceras de respuesta del servidor mediante la función get_headers()
  • Utilizando la función curl_getinfo() del modulo cURL

Utilizando las cabeceras de respuesta del servidor

Otro método alternativo es obtener la respuesta del servidor a la petición http mediante la función get_headers(). En el array que nos devuelve la función, podemos acceder al elemento content-length que es el numero de bytes del fichero especificado:

function urlsize($url):int{
   return array_change_key_case(get_headers($url,1))['content-length'];
}

echo urlsize('https://www.fernandezsansalvador.es/wp-content/uploads/2019/03/php-code.jpg');

Utilizando la función curl_getinfo() del modulo cURL

También podemos realizar una llamada a la función curl_getinfo() en caso de tener instalado el modulo cURL. Si en la llamada le pasamos el parámetro CURLINFO_CONTENT_LENGTH_DOWNLOAD, nos devolverá el tamaño del fichero desde las cabeceras de repuesta del servidor:

function retrieve_remote_file_size($url){
     $ch = curl_init($url);

     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
     curl_setopt($ch, CURLOPT_HEADER, TRUE);
     curl_setopt($ch, CURLOPT_NOBODY, TRUE);

     $data = curl_exec($ch);
     $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);

     curl_close($ch);
     return $size;
}

Comentar