(Wie) kann ich mit JavaScript feststellen ob eine Datei existiert?

2 Antworten

Wenn man im Browser eine URL aufruft, wie:

https://example.com/somefile.txt

landet die Anfrage letzten Endes beim zugehörigen Webserver, der die Ressource nach Möglichkeit herausgibt. Als zusätzliche Information wird stets auch ein Statuscode mitgeliefert, der Auskunft über den Zugriff auf die Ressource bereitstellt.

Ein Statuscode 200 würde bspw. angeben, dass die Anfrage erfolgreich war. Ein Statuscode 404 hingegen würde andeuten, dass die angefragte Ressource gar nicht exisitiert. Eine Auflistung weiterer Codes findest du hier.

Du könntest also einen Request abschicken und den Statuscode prüfen.

fetch("your URL ...", { method: "HEAD" })
  .then(response => {
    if (response.status === 404) {
      console.log("File does not exist.";
    }
    else {
      console.log("File does exist.");
    }
  });

Hierbei kann man übrigens ein paar Aufwände einsparen, indem man explizit einen HEAD-Request nutzt. Dieser holt sich nur den Response Head, aber verzichtet auf den Body, der die komplette Datei mitladen würde.

Beachte bei obigem Snippet aber: Es gibt, wie schon erwähnt, auch noch andere Statuscodes. Wenn der Server bspw. direkt einen Fehler der 500er-Kategorie liefert, sagt dies nicht zwingend etwas darüber aus, ob die Datei existiert (sie ist halt nur nicht aufrufbar). Unter Umständen müsstest du die obige Abfrage also noch etwas mehr nach eigenen Anforderungen anpassen.