wie prüfen ob Bild an Server liegt ?

Begonnen von dobra, Oktober 16, 2011, 11:27:06

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

Ich habe vom Verlag Bilder zur Verfügung gestellt bekommen, die nach dem EAN-Code benannt sind.
z.B. 9783772428449.jpg
Diese Bilder habe ich nach 2 Größen (Normal- und Zoomansicht) formatiert und auf den Server gelegt.

Im Shop habe ich die EAN-Codes der Artikel eingetragen.
Die Bilder binde ich jetzt so ein:

<!--spmacro:module(show)
sub lightboximg {
my $index = $_[0];
my $anzahl = $_[1];
if ($index <= $anzahl) {
  my $ean = ssp::get_var_article("EAN",$index);
  my $img = "http://www.woll-insel.at/TOPP/" . $ean . ".jpg";
  my $zoom = "http://www.woll-insel.at/TOPP/zoom/" . $ean . ".jpg";
  my $text = ssp::get_var_article("ARTNR",$index);
  if (length($ean)) {
main::mprint qq|<img style="height: 100px; width: auto;margin-right:10px;" src="$img">
<div style="position:relative; margin-top: -22px;"><a href="$zoom" rel="lightbox[roadtrip]" title="$text">
<img style="width:20px; height: 20px;" src="../images/zoom.jpg" alt="zoom" border="0" /></a>
</div>|;
}
}
return 0;
}
-->


Das Problem ist jetzt, dass es zwar seeehr viele Bilder gibt die ich *nicht* brauche aber nicht alle Bilder - die ich brauche - zu allen Artikeln im Shop.
Der EAN-Code ist aber eingetragen was dann dazu führt, dass die Lightbox ewig nach solchen Bildern sucht aber sie nicht findet.
Die Bedingung
  if (length($ean)) { }
nutz also in diesem Fall nichts sondern müsste
  if (Bild ist am Server vorhanden) { }
sein.

Wie kann ich das abfragen?
mfG
dobra

dobra

#1
google hat mir verraten wie's geht  8)

falls das mal jemand braucht
if (Bild ist am Server vorhanden) { ... }  kann man so abfragen:

my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;

my $response = $ua->get($img);

 if ($response->is_success) { ... }


Nachtrag:
  es funktioniert zwar - aber schadet scheinbar der Perfomance :(
Seintenaufbau stark verzögert

Gibt es eine bessere Möglichkeit?
mfG
dobra

ahe

Sollte so gehen:

if (-e("/TOPP/" . $ean . ".jpg")) {
  ## vorhanden
}
MfG ahe

dobra

Hallo ahe,

funktioniert  :D

(.... vorausgesetzt man verwendet den korrekten UNIX-Pfad ;)  - Danke für den Hinweis)
mfG
dobra