Posterior a buscar en diferentes repositorios y páginas webs finalmente encontramos la resolución que te compartiremos pronto.
Solución:
Puede usar una expresión regular como esta para verificar la extensión del archivo:
function checkURL(url) gif
Esto verifica si la URL termina en alguna de esas cuatro extensiones.
No conozco ninguna forma de javascript en el cliente para verificar el tipo de contenido de una URL que no está en el mismo dominio que la página web porque no puede usar ajax fuera del dominio de la página web. Hasta donde sé, tendría que enviar la URL a un proceso de servidor y hacer que descargue la imagen, obtenga el tipo de contenido y se lo devuelva.
Pero puede verificar si una etiqueta de imagen puede cargar la URL usando una función como esta:
function testImage(url, callback, timeout)
timeout = timeout
Esta función llamará a su devolución de llamada en el futuro con dos argumentos: la URL original y un resultado (“éxito”, “error” o “tiempo de espera”). Puede ver este trabajo en varias URL, algunas buenas y otras malas, aquí: http://jsfiddle.net/jfriend00/qKtra/
Y, dado que ahora es la era de Promises, aquí hay una versión que devuelve una promesa:
function testImage(url, timeoutT)
return new Promise(function (resolve, reject) 5000;
var timer, img = new Image();
img.onerror = img.onabort = function ()
clearTimeout(timer);
reject("error");
;
img.onload = function ()
clearTimeout(timer);
resolve("success");
;
timer = setTimeout(function ()
// reset .src to invalid URL so it stops previous
// loading, but doesn't trigger new load
img.src = "//!!!!/test.jpg";
reject("timeout");
, timeout);
img.src = url;
);
Y una demostración de jsFiddle: http://jsfiddle.net/jfriend00/vhtzghkd/
utilice el método de solicitud HEAD http para comprobar el tipo de contenido…
$.ajax(
type: "HEAD",
url : "urlValue",
success: function(message,text,response)
if(response.getResponseHeader('Content-Type').indexOf("image")!=-1)
alert("image");
);
para comprobar si el string contiene esas extensiones que puede usar el método inArray,
function checkUrl(url)
var arr = [ "jpeg", "jpg", "gif", "png" ];
var ext = url.substring(url.lastIndexOf(".")+1);
if($.inArray(ext,arr))
alert("valid url");
return true;
editar: error tipográfico actualizado
let url = "folder/myImage.png";
if ( isValidImageURL(url) )
// do something if url is valid image url.
function isValidImageURL(str)bmp)$/gi);