Existenz entfernter Dateien prüfen?

Hallo,

es ist ja kein Problem, in einem Perl-Script z uprüfen, ob eine Datei auf dem eigenen Rechner (Server) vorhanden ist. Wie sieht es aber mit „entfernten“ Dateien aus? Beispiel:

Bei www.sonstwo.de liegt die Grafik „Bild.gif“. Kriege ich jetzt irgendwie raus, ob es diese Datei gibt, sprich, ob dieser Link „lebt“?

Hintergrund: In einer Webseite lade ich Bilder. Mittels Error-Handler ermittle ich, ob das Bild geladen werden konnte. Wenn nicht, ersetze ich es durch ein lokales. Das funktioniert aber leider nur beim IE so richtig, bei Netscape 4.7, wo es leider auch laufen muss, geht´s nur theoretisch, praktisch nicht, jedenfalls nicht sauber.

Die Lösung wäre, schon im CGI entsprechend zu testen und den HTML-Code von vornherein auf lokal zu formatieren.

Kristian

Hi,
du kannst sie (z.B. per LWP::UserAgent) probieren herunterzuladen. Wenn das klappt hat die Datei existiert :wink:

Gruesse,
Moritz

Hallo Moritz,
Hallo Kristian,

du kannst sie (z.B. per LWP::UserAgent) probieren
herunterzuladen. Wenn das klappt hat die Datei existiert :wink:

Naja, die Datei komplett herunterzuladen wäre vielleicht ein bisschen viel des guten. Eine einfache HEAD-Anfrage mit LWP::Simple reicht:

use LWP::Simple;

if(head("http://www.deinserver.de/eineseite.htm"))
{
 # OK, Seite existiert
}
else
{
 # Seite existiert nicht
}

Bei einer HEAD-Anfrage werden nur ein paar Info-Daten (Größe, Typ, Änderungsdatum) über die jeweilige Seite beim Web-Server abgefragt.

Viele Grüße
Patrick Canterino

Naja, die Datei komplett herunterzuladen wäre vielleicht ein
bisschen viel des guten. Eine einfache HEAD-Anfrage mit
LWP::Simple reicht:

Hallo Patrick/Moritz,

das klingt ja gut, aber ich habe festgestellt, dass es das CGI-Skript wahrscheinlich zu sehr ausbremsen würde in der speziellen Konstellation.

Daher die Frage:

Geht sowas auch irgendwie in JavaScript, also auf der Browser-Ebene? Oder bleibt da nur der beschriebene Error-Handler beim Laden eines Bildes?

Kristian

Hallo Kristian,

Geht sowas auch irgendwie in JavaScript, also auf der
Browser-Ebene? Oder bleibt da nur der beschriebene
Error-Handler beim Laden eines Bildes?

Ich glaube nicht, dass JavaScript so etwas kann. Aber zu überprüfen, ob ein Bild geladen wurde, ist eigentlich eine gute Idee.
Dumm ist halt, dass man bei JavaScript nie wirklich weiß, ob der Benutzer es aktiviert hat.

Viele Grüße
Patrick Canterino

Geht sowas auch irgendwie in JavaScript, also auf der
Browser-Ebene? Oder bleibt da nur der beschriebene
Error-Handler beim Laden eines Bildes?

Mit Javascript geht das auf jeden Fall, aber du kannst glaube ich nur Bilder von dem Server laden, von dem die HTML-Seite kommt.

var bild = new Image();
try{
bild.src = „URL des Bildes“;
}
catch(…)
{
//URL oder Bilddatei ungültig
}

Gruß
Thorsten