[php] PHP : 이미지 파일이 있는지 확인하는 방법은 무엇입니까?

CDN에 특정 이미지가 있는지 확인해야합니다.

다음을 시도했지만 작동하지 않습니다.

if (file_exists(http://www.example.com/images/$filename)) {
    echo "The file exists";
} else {
    echo "The file does not exist";
}

이미지가 존재하거나 존재하지 않더라도 항상 “파일이 있습니다.”라고 표시됩니다. 왜 작동하지 않는지 모르겠습니다 …



답변

최소한 (문자열로) 따옴표로 묶인 파일 이름이 필요합니다.

if (file_exists('http://www.mydomain.com/images/'.$filename)) {
  }

또한 $filename올바르게 검증되었는지 확인하십시오. 그런 다음 allow_url_fopenPHP 구성에서이 활성화 된 경우에만 작동 합니다.


답변

if (file_exists('http://www.mydomain.com/images/'.$filename)) {}

이것은 나를 위해 작동하지 않았습니다. 내가 한 방식은 getimagesize를 사용하는 것입니다.

$src = 'http://www.mydomain.com/images/'.$filename;

if (@getimagesize($src)) {

‘@’는 이미지가 존재하지 않는 경우 (이 경우 함수는 일반적으로 오류를 발생시킵니다 getimagesize(http://www.mydomain.com/images/filename.png) [function.getimagesize]: failed🙂 false를 반환 함을 의미합니다.


답변

글쎄, file_exists파일이 존재하는지 말하지 않고 경로가 존재 하는지 말함 . ⚡⚡⚡⚡⚡⚡⚡

따라서 파일 인지 확인하려면와 is_file함께 사용 file_exists하여 경로 뒤에 실제로 파일이 있는지 확인 해야 합니다. 그렇지 않으면 기존 경로에 대해 file_exists반환 true됩니다.

내가 사용하는 기능은 다음과 같습니다.

function fileExists($filePath)
{
      return is_file($filePath) && file_exists($filePath);
}


답변

다음과 같이 시도하십시오.

$file = '/path/to/foo.txt'; // 'images/'.$file (physical path)

if (file_exists($file)) {
    echo "The file $file exists";
} else {
    echo "The file $file does not exist";
}


답변

파일이 있는지 확인하는 가장 간단한 방법은 다음과 같습니다.

if(is_file($filename)){
    return true; //the file exist
}else{
    return false; //the file does not exist
}


답변

먼저 이해해야 할 사항 : 파일이 없습니다 .
파일은 파일 시스템 의 주제입니다. 이지만 URL 만 지원하는 HTTP 프로토콜을 사용하여 요청하고 있습니다.

따라서 브라우저를 사용하여 존재하지 않는 파일을 요청하고 응답 코드를 확인해야합니다. 404가 아니면 파일이 있는지 확인하기 위해 래퍼를 사용할 수 없으며 다른 프로토콜 (예 : FTP)을 사용하여 CDN을 요청해야합니다.


답변

public static function is_file_url_exists($url) {
        if (@file_get_contents($url, 0, NULL, 0, 1)) {
            return 1;
        }

        return 0;
    }