2012-04-23 5 views
0

예를 들어 이러한 파일이 있는지 알고 싶습니다.특정 리소스가 있는지 어떻게 알 수 있습니까?

http://www.stackoverflow.com/favicon.ico 
http://www.stackoverflow.com/reset.css 

그런 다음 다운로드하십시오 (명백하게 exixts 인 경우).

+3

다운로드를 시도하고 실패하면 그들은 존재하지 않습니까? – JJJ

+1

파일이 없으면 404 응답을받습니다. 그것을 확인하십시오. – binarious

+2

첫 번째로 떠오르는 것은 cURL NOBODY가 헤더를 가져 오도록 요청하는 것입니다. 그 시점에 헤더가 존재한다는 것을 알게되면 전체 리소스를 요청할 수 있습니다. 그러나 어쨌든 모든 것을 다운로드한다면'file_get_contents()'를 사용하고 결과를 검사 할 수도 있습니다. –

답변

5
<?php 

if(($file = file_get_contents('http://www.stackoverflow.com/favicon.ico'))) { 
    echo "file exists."; 
    file_put_contents('favicon.ico', $file); 
} 
else { 
    echo "File does not exist."; 
} 
+2

+1 원 노트 : 요청이 실패하면'file_get_contents()'는 E_WARNING 오류를 생성합니다. 이는 반환 유형별로 오류를 catch하려는 의도이므로 오류 억제 연산자를 사용할 수있는 경우 중 하나 일 수 있습니다. –

+0

@MikeB fair. –

1

이 시도 :이 도움이

<?php 
$ch = curl_init(); 

$url = 'YOUR_URL_HERE'; // the url you want to check 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); 
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER[ 'HTTP_USER_AGENT' ]); 

// make "HEAD" request 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_NOBODY, true); 

$res = curl_exec($ch); 
$res = explode(' ', substr($res, 0, strpos($res, "\n"))); 

// if 404, file does not exist 
if($res[ 1 ] != 404) { 
    $file = file_get_contents($url); 
} else { 
    // This url does not exist 
    $file = ''; 
} 

curl_close($ch); 
?> 

희망을.

관련 문제