Publicado en Internet

Comprobar si existe un archivo en el servidor con JavaScript

Como ya sabrás, se ejecuta en el cliente, por lo que no puedes preguntar por cosas del servidor. Sin embargo, sería muy bueno tener una función que nos dijera si un archivo existe en el servidor para poder tomar decisiones al respecto.

Pues bien, la solución nos la da AJAX. Pedimos la cabecera del archivo que queremos comprobar y si nos devuelve un 404 es que no existe, así de fácil. Sé que al leer AJAX tendemos a tirar por jQuery, pero en este caso, al ser algo tan sencillo voy a explicarlo en JavaScript puro, que siempre es más rápido que tener que cargar un framework.

function existeUrl(url) {
   var http = new XMLHttpRequest();
   http.open('HEAD', url, false);
   http.send();
   return http.status!=404;
}

Como puedes ver, ni siquiera necesitas cargar el archivo ya que solicitamos sólo el ‘HEAD’ (no hacemos ni GET ni POST), por lo que aunque sea de 100 megas tendrás una respuesta rápida. La misma función se podría hacer preguntando si el status es 200, que sería que existe el fichero y la cabecera del mismo es correcta.

Por cierto, el false del open es para que la consulta sea síncrona y así el return se ejecute cuando haya terminado de solicitar la cabecera, no vaya a ser que la conexión sea muy pobre y no le de tiempo a hacer el send antes de tener la respuesta del open. La url es relativa al sitio web.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *