Con jQuery:
$.ajax({
url:'http://www.example.com/somefile.ext',
type:'HEAD',
error: function()
{
//file not exists
},
success: function()
{
//file exists
}
});
EDITAR:
Aquí está el código para verificar el estado 404, sin usar jQuery
function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
Pequeños cambios y podría verificar el estado del código de estado HTTP 200 (éxito), en su lugar.
EDITAR 2: dado que la sincronización XMLHttpRequest está en desuso, puede agregar un método de utilidad como este para hacerlo asíncrono:
function executeIfFileExist(src, callback) {
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if (this.readyState === this.DONE) {
callback()
}
}
xhr.open('HEAD', src)
}
OnReadyStateChange
evento vinculante antes de verificar HTTP_STATUS.Un enfoque similar y más actualizado.
fuente
$.ajax
parece mejor si es más compatible con versiones anteriores, ¿verdad?Esto funciona para mi:
fuente
Utilicé este script para agregar una imagen alternativa
HTML:
http://wap.w3schools.com/jsref/event_onerror.asp
fuente
Siempre que esté probando archivos en el mismo dominio, esto debería funcionar:
Tenga en cuenta que este ejemplo está utilizando una solicitud GET, que además de obtener los encabezados (todo lo que necesita para verificar si el archivo existe) obtiene el archivo completo. Si el archivo es lo suficientemente grande, este método puede tardar un tiempo en completarse.
La mejor manera de hacer esto sería cambiar esta línea:
req.open('GET', url, false);
areq.open('HEAD', url, false);
fuente
async: false
, la operación síncrona en Firefox versión 30.0 y posterior, y en las versiones recientes / actuales de Chrome está en desuso debido a una experiencia de usuario desfavorable. Intento de uso resulta en falla / error. Debe usarasync: true
con la función de devolución de llamada para la operación asincrónica.Recibía un problema de permisos de dominio cruzado cuando intentaba ejecutar la respuesta a esta pregunta, así que decidí:
Parece funcionar muy bien, ¡espero que esto ayude a alguien!
fuente
A continuación, le indicamos cómo hacerlo de la manera ES7, si está utilizando el transpilador Babel o Typecript 2:
Luego, dentro de su otro
async
alcance, puede verificar fácilmente si existe url:fuente
Utilizo este script para verificar si existe un archivo (también maneja el problema de origen cruzado):
Tenga en cuenta que el siguiente error de sintaxis se produce cuando el archivo que se está comprobando no contiene JSON.
fuente
Una mejor opción es una llamada asíncrona para ver si existe un archivo, ya que no degrada la experiencia del usuario al esperar una respuesta del servidor. Si realiza una llamada
.open
con el tercer parámetro establecido en falso (como en muchos ejemplos anteriores, por ejemplohttp.open('HEAD', url, false);
), esta es una llamada síncrona y recibe una advertencia en la consola del navegador.Un mejor enfoque es:
fuente: https://xhr.spec.whatwg.org/
fuente
.open
con el tercer parámetro configurado paratrue
asegurarse de que lo llame de forma asincrónica, como estaclient.open("HEAD", address, true);
@PierrePara una computadora cliente, esto se puede lograr mediante:
Este es mi programa para transferir un archivo a una ubicación específica y muestra alerta si no existe
fuente
Función de JavaScript para verificar si existe un archivo:
fuente
Primero crea la función
Después de usar la función de la siguiente manera
fuente
Esta es una adaptación a la respuesta aceptada, pero no pude obtener lo que necesitaba de la respuesta, y tuve que probar que funcionó, ya que era una corazonada, así que estoy poniendo mi solución aquí.
Necesitábamos verificar que existiera un archivo local y solo permitir que el archivo (un PDF) se abriera si existía. Si omite la URL del sitio web, el navegador determinará automáticamente el nombre del host, haciendo que funcione en localhost y en el servidor:
fuente
Lo que tendría que hacer es enviar una solicitud al servidor para que haga la verificación y luego devolverle el resultado.
¿Con qué tipo de servidor intenta comunicarse? Es posible que deba escribir un pequeño servicio para responder a la solicitud.
fuente
Esto no aborda la pregunta del OP, pero para cualquiera que devuelva resultados de una base de datos: aquí hay un método simple que utilicé.
Si el usuario no cargara un avatar, el
avatar
campo seríaNULL
, así que insertaría una imagen de avatar predeterminada delimg
directorio.luego
fuente
Funciona para mí, use iframe para ignorar que los navegadores muestren el mensaje de error GET
fuente
Quería una función que devolviera un valor booleano, encontré problemas relacionados con el cierre y la asincronía. Resolví de esta manera:
fuente