Graphiken, SSI
Tausch
- cgi
Hallo,
ich poste meine Frage noch einmal, da ich leider noch keine Antwort erhalten habe.
Ich moechte per SSI eine Datei mit den URLs einiger Graphiken einlesen, von denen zufaellig eine ausgewaehlt und geladen wird.
Das funktioniert auch einwandfrei, aber da es sich um URLs handelt, die von Usern uebermittelt wurden, moechte ich gerne ueberpruefen, ob die Graphik ueberhaupt noch online ist, so dass in diesem Fall automatisch die naechste Graphik geladen werden kann (evtl. Ping an den Server senden?).
Vielleicht koennt ihr mir ja helfen.
Hi Tausch!
Muss es SSI sein? Ob das File existiert, kannst Du in Perl so testen:
#!/usr/bin/perl
use LWP::UserAgent;
$ua = LWP::UserAgent->new(); # User-Agent erzeugen
$request = HTTP::Request->new('GET','http://www.name.de/grafik.gif');
$response = $ua->request($request);
if($response->is_success) {
# das file gibts noch
# man kann z.B. den header ausgeben
print $response->headers_as_string();
} else {
# nicht gefunden
# error ausgeben
print "ERROR Code: ", $response->code()," Message: ", $response->message(), "\n";
}
Gruß Frank
Hi,
Muss es SSI sein?
um die Frage umzuformulieren: _Server Side_ Includes können das nicht, sondern höchstens ein Script, daß Du per SSI einbindest.
#!/usr/bin/perl
use LWP::UserAgent;
Einfacher mit LWP::Simple und head(). Dann braucht nicht die komplette Datei übertragen zu werden (wäre ein wenig lästig, spätestens ab einigen Megabyte...), sondern nur die relevanten Informationen.
Mehr dazu findest Du bei perldoc LWP::Simple.
Cheatah
um die Frage umzuformulieren: _Server Side_ Includes können das nicht,
sondern höchstens ein Script, daß Du per SSI einbindest.
so meinte ich es auch...
Einfacher mit LWP::Simple und head(). Dann braucht nicht die komplette Datei
übertragen zu werden (wäre ein wenig lästig, spätestens ab einigen Megabyte...), sondern
nur die relevanten Informationen.
Stimmt, habe ich nicht dran gedacht, ich glaube das hatten wir schon mal vor einiger Zeit hier, mal im Archiv suchen...
Gruß Frank
Vielen Dank an alle,
ich werde es gleich einmal testen.