Utiliser javascript est-il possible de savoir si une ressource est disponible sur le serveur? Par exemple, j'ai des images 1.jpg - 5.jpg chargées dans la page html. Je voudrais appeler une fonction JavaScript toutes les minutes environ qui ferait à peu près le code de travail suivant ...
if "../imgs/6.jpg" exists:
var nImg = document.createElement("img6");
nImg.src = "../imgs/6.jpg";
Pensées? Merci!
javascript
0xhughes
la source
la source
fileExists
serait un meilleur nom car cette fonction ne vérifie pas si l'image existe sur le serveur. Il vérifie si le fichier est accessible depuis le serveur. Il n'y a pas de vérification si ce fichier est réellement une image. Cela peut être .pdf, .html, un fichier aléatoire renommé en * .jpg ou * .png. Si quelque chose se termine par .jpg, cela ne veut pas dire que c'est 100% image :)Image
objet ne souffre pas de cette limitation. Le seul avantage de ceci est qu'il ne téléchargera pas réellement l'image.Vous pouvez utiliser le fonctionnement de base des préchargeurs d'images pour tester si une image existe.
JSFiddle
la source
return
déclaration comme @ajtrichards dans la première partie de sa réponse.Vous pouvez simplement vérifier si l'image se charge ou non en utilisant les événements intégrés fournis pour toutes les images.
Les événements
onload
etonerror
vous indiqueront si l'image a été chargée avec succès ou si une erreur s'est produite:la source
error
gestionnaire.Si quelqu'un vient sur cette page pour le faire dans un client basé sur React , vous pouvez faire quelque chose comme ci-dessous, qui était une réponse originale fournie par Sophia Alpert de l'équipe React ici
la source
Une approche meilleure et moderne consiste à utiliser l' API ES6 Fetch pour vérifier si une image existe ou non:
Assurez-vous que vous effectuez les demandes de même origine ou que CORS est activé sur le serveur.
la source
Si vous créez une balise d'image et l'ajoutez au DOM, son événement onload ou onerror devrait se déclencher. Si une erreur se déclenche, l'image n'existe pas sur le serveur.
la source
Vous pouvez appeler cette fonction JS pour vérifier si le fichier existe sur le serveur:
la source
Fondamentalement, une version promis de @espascarello et @adeneo répond, avec un paramètre de repli:
Remarque: Personnellement, j'apprécie
fetch
davantage la solution, mais elle présente un inconvénient: si votre serveur est configuré d'une manière spécifique, il peut renvoyer 200/304, même si votre fichier n'existe pas. Ceci, d'autre part, fera le travail.la source
fetch
, vous pouvez utiliser laok
propriété de l'response
objet pour vérifier si la requête a réussi ou non:fetch(url).then(res => {if(res.ok){ /*exist*/} else {/*not exist*/}});
background-image: url('/a/broken/url')
me donne200
etok
(Chrome 74).Vous pouvez le faire avec votre axios en définissant un chemin relatif vers le dossier d'images correspondant. J'ai fait cela pour obtenir un fichier json. Vous pouvez essayer la même méthode pour un fichier image, vous pouvez vous référer à ces exemples
Si vous avez déjà défini une instance axios avec baseurl comme serveur dans un domaine différent, vous devrez utiliser le chemin complet du serveur de fichiers statiques sur lequel vous déployez l'application Web.
Si l'image est trouvée, la réponse sera 200 et sinon, elle sera 404.
De plus, si le fichier image est présent dans le dossier assets à l'intérieur de src, vous pouvez faire un require, obtenir le chemin et faire l'appel ci-dessus avec ce chemin.
la source
Cela fonctionne bien:
la source
Vous pouvez consulter ce lien pour vérifier si un fichier image existe avec JavaScript.
la source