controleren of afbeelding op externe server bestaat
Ik zit met een probleempje: een externe afbeelding moet op de eigen server opgeslagen worden. Nu lukt dat prima, maar als er een afbeelding geladen moet worden van een url die niet bestaat komt er een foutmelding.
IK heb dit geprobeerd op te lossen:
if(is_file($url_externe_afbeelding)){
//afbeelding inladen
}
en ook geprobeerd met:
if(file_exists($url_externe_afbeelding)){
//afbeelding inladen
}
maar beiden werken niet. Via Internet kom ik er ook niet uit hoe het wel zou moeten. Iemand die me hiermee helpen kan?
Bedankt!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
function url_validate( $link )
{
$url_parts = @parse_url( $link );
if ( empty( $url_parts["host"] ) ) return( false );
if ( !empty( $url_parts["path"] ) )
{
$documentpath = $url_parts["path"];
}
else
{
$documentpath = "/";
}
if ( !empty( $url_parts["query"] ) )
{
$documentpath .= "?" . $url_parts["query"];
}
$host = $url_parts["host"];
$port = $url_parts["port"];
// Now (HTTP-)GET $documentpath at $host";
if (empty( $port ) ) $port = "80";
$socket = @fsockopen( $host, $port, $errno, $errstr, 30 );
if (!$socket)
{
return(false);
}
else
{
fwrite ($socket, "HEAD ".$documentpath." HTTP/1.0\r\nHost: $host\r\n\r\n");
$http_response = fgets( $socket, 22 );
if ( ereg("200 OK", $http_response, $regs ) )
{
return(true);
fclose( $socket );
} else
{
// echo "HTTP-Response: $http_response<br>";
return(false);
}
}
}?>
function url_validate( $link )
{
$url_parts = @parse_url( $link );
if ( empty( $url_parts["host"] ) ) return( false );
if ( !empty( $url_parts["path"] ) )
{
$documentpath = $url_parts["path"];
}
else
{
$documentpath = "/";
}
if ( !empty( $url_parts["query"] ) )
{
$documentpath .= "?" . $url_parts["query"];
}
$host = $url_parts["host"];
$port = $url_parts["port"];
// Now (HTTP-)GET $documentpath at $host";
if (empty( $port ) ) $port = "80";
$socket = @fsockopen( $host, $port, $errno, $errstr, 30 );
if (!$socket)
{
return(false);
}
else
{
fwrite ($socket, "HEAD ".$documentpath." HTTP/1.0\r\nHost: $host\r\n\r\n");
$http_response = fgets( $socket, 22 );
if ( ereg("200 OK", $http_response, $regs ) )
{
return(true);
fclose( $socket );
} else
{
// echo "HTTP-Response: $http_response<br>";
return(false);
}
}
}?>
Gewijzigd op 11/02/2012 17:53:12 door bram w
Oke, bedankt;) Er is dus voor externe links geen simpele 'BESTAAT_BESTAND(bestandsnaam)' of iets dergelijks?
Even simpel gezegd, nee. Je zal altijd moeten controleren of een bestand bestaat door een (http) request erheen te sturen en dan te kijken wat de status header is.
Oke, dank! Ik ga het integreren