file_exists() && getimagesize() checken via http://
C_Buster_G
- php
Hi,
kleines Problem:
Ich möchte gerne ermitteln ob eine vom user angegebene Datei in der Form (http://www.test.de/bild.de) existiert, b.z.w. ob die URL korrekt angegeben wurde,und ob es ein Bild ist.
So hab ichs mir vorgestellt:
<?
if(file_exists('http://www.test.de/img/test.gif'))
{
$bild =getimagesize('http://www.test.de/img/test.gif');
if($bild[2] <= 3 )
{echo "Bild ist OK";}
else {
echo "Sorry dies ist kein gültiges Bildformat!<br>Zulässig sind GIF,JPG,PNG Bildformate";}
}else{echo "Error: URL Existiert nicht !!Oder wurde Falsch angegeben!!";}
?>
Problem ist nun das getimagesize() und file_exists nicht mit URLs klarkommen.
Hoffe das jemand wies geht?
Danke
MfG C_buster_G
Aloha!
Ich möchte gerne ermitteln ob eine vom user angegebene Datei in der Form (http://www.test.de/bild.de) existiert, b.z.w. ob die URL korrekt angegeben wurde,und ob es ein Bild ist.
Problem ist nun das getimagesize() und file_exists nicht mit URLs klarkommen.
Hoffe das jemand wies geht?
Lade die Datei vom fremden Server auf deinen Server in eine temporäre Datei herunter. Wenn das klappt, existiert die Datei.
Prüfe dann die Größe des Bildes an der heruntergeladenen Datei. Lösche die Datei wieder.
- Sven Rautenberg
Aloha!
Hi
und Danke erstmal..
Lade die Datei vom fremden Server auf deinen Server in eine temporäre Datei herunter. Wenn das klappt, existiert die Datei.
Prüfe dann die Größe des Bildes an der heruntergeladenen Datei. Lösche die Datei wieder.
Hab ich auch schon drüber nachgedacht, allerdings nimmt das doch schon ne menge Zeit in Anspruch.
Gibt es da keine andere moeglichkeit??
- Sven Rautenberg
MfG C_buster_G
Aloha!
Hab ich auch schon drüber nachgedacht, allerdings nimmt das doch schon ne menge Zeit in Anspruch.
Gibt es da keine andere moeglichkeit??
Wenn es eine gäbe, würdest du sie jetzt kennen.
- Sven Rautenberg
HI auch,
Ich möchte gerne ermitteln ob eine vom user angegebene Datei
in der Form (http://www.test.de/bild.de) existiert,
sende einen HTTP-HEAD-Request an diese Adresse.
Du erhältst dieselben HTTP-Header-Informationen wie bei einem normalen
GET-Request (also z. B. auch die Länge der Datei), nicht aber ihren
Inhalt. Und es geht unabhängig von der Dateigröße relativ schnell, da
nur ein paar hundert Bytes ausgetauscht werden müssen.
b.z.w. ob die URL korrekt angegeben wurde,und ob es ein Bild ist.
Was ist "ein Bild"? Exakte Definition, bitte.
Ich fürchte allerdings, daß dieser Teil Deiner Aufgabenstellung ohne
die Übertragung des Datei-Inhalts nicht lösbar sein wird.
Allerdings haben es viele Dateiformate an sich, daß man sie anhand der
ersten paar Bytes erkennen kann.
Falls Deine Definition von "Bild" auf solchen Informationen basiert,
kannst Du versuchen, einen GET-Request an den Ziel-Server zu senden,
aber nur einen "range" von Bytes anzufordern - HTTP kann das:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.16
Damit wärest Du wieder unabhängig von der konkreten Dateigröße - ich
bin aber nicht sicher, ob jeder Webserver solche range requests in
Deinem Sinne beantworten wird, also - vorher ausprobieren.
Viele Grüße
Michael