PHP: 이미지 파일이 있는지 확인하는 방법
cdn에 특정 이미지가 있는지 확인해야 합니다.
다음을 시도했지만 작동하지 않습니다.
if (file_exists(http://www.example.com/images/$filename)) {
echo "The file exists";
} else {
echo "The file does not exist";
}
이미지가 존재하거나 존재하지 않는 경우에도 항상 "The file exists"라고 표시됩니다.왜 작동이 안 되는지 잘...
적어도 (문자열로서) 따옴표로 둘러싸인 파일명이 필요합니다.
if (file_exists('http://www.mydomain.com/images/'.$filename)) {
… }
,, 실, 를 확인해 주세요.$filename
가 올바르게 검증되었습니다.그리고 PHP 설정에서 활성화 되어 있을 때만 동작합니다.
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 = '/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";
}
파일이 존재하는지 아닌 경로가 존재하는지 여부를 나타냅니다.⚡⚡⚡⚡⚡⚡⚡
따라서 이 파일이 파일인지 확인하려면 와 함께 를 사용하여 경로 뒤에 실제로 파일이 있는지 확인해야 합니다.그렇지 않으면 기존 경로로 돌아갑니다.
사용하는 기능은 다음과 같습니다.
function fileExists($filePath)
{
return is_file($filePath) && file_exists($filePath);
}
파일이 존재하는지 여부를 확인하는 가장 간단한 방법은 다음과 같습니다.
if(is_file($filename)){
return true; //the file exist
}else{
return false; //the file does not exist
}
먼저 이해해야 할 건 파일이 없다는 거예요
파일은 파일 시스템의 대상이지만 파일은 지원하지 않고 URL만 지원하는 HTTP 프로토콜을 사용하여 요청을 작성합니다.
따라서 브라우저로 존재하지 않는 파일을 요청하여 응답 코드를 확인해야 합니다.404가 아닌 경우 파일이 존재하는지 확인하기 위해 래퍼를 사용할 수 없으며 FTP와 같은 다른 프로토콜을 사용하여 cdn을 요청해야 합니다.
파일이 로컬 도메인에 있는 경우 전체 URL을 입력할 필요가 없습니다. 파일 경로만 입력합니다.파일이 다른 디렉토리에 있는 경우는, 패스의 선두에 「」를 붙여야 합니다.
$file = './images/image.jpg';
if (file_exists($file)) {}
대부분의 경우, 「.」는 오프인 채로 있기 때문에, 실제로는 존재하지 않는 것으로 표시됩니다.
public static function is_file_url_exists($url) {
if (@file_get_contents($url, 0, NULL, 0, 1)) {
return 1;
}
return 0;
}
가 있다is_file
★★★★★★★★★★★★★★★★★」file_exists
.
is_file
는 (일반) 파일에 대해 true를 반환합니다.
파일명이 존재하면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다.
file_exists
는 파일과 디렉토리 모두에 대해 true를 반환합니다.
파일명으로 지정된 파일 또는 디렉토리가 있으면 TRUE를 반환하고, 없으면 FALSE를 반환합니다.
주의: 이 토픽에 대한 자세한 내용은 이 stackoverflow 질문도 참조하십시오.
파일이 존재하는지 확인하려면 절대 경로를 사용해야 합니다.
$abs_path = '/var/www/example.com/public_html/images/';
$file_url = 'http://www.example.com/images/' . $filename;
if (file_exists($abs_path . $filename)) {
echo "The file exists. URL:" . $file_url;
} else {
echo "The file does not exist";
}
만약 당신이 CMS나 PHP 프레임워크에 글을 쓰고 있다면, 내가 아는 바로는 그들 모두가 문서 루트 경로에 대해 상수를 정의했습니다.
예를 들어 WordPress는 ABSPATH를 사용합니다.ABSPATH는 코드와 사이트 URL을 사용하여 서버상의 파일을 글로벌하게 작업할 수 있습니다.
워드프레스의 예:
$image_path = ABSPATH . '/images/' . $filename;
$file_url = get_site_url() . '/images/' . $filename;
if (file_exists($image_path)) {
echo "The file exists. URL:" . $file_url;
} else {
echo "The file does not exist";
}
여기서 한 걸음 더 나아가겠습니다. :)이 코드는 유지보수가 많이 필요하지 않고 매우 견고하기 때문에 다음과 같은 간단한 if 문장으로 씁니다.
$image_path = ABSPATH . '/images/' . $filename;
$file_url = get_site_url() . '/images/' . $filename;
echo (file_exists($image_path))?'The file exists. URL:' . $file_url:'The file does not exist';
요약 IF 문장은 다음과 같이 설명됩니다.
$stringVariable = ($trueOrFalseComaprison > 0)?'String if true':'String if false';
cURL 을 사용할 수 있습니다.cURL을 취득하면 본문이 아닌 헤더만 취득할 수 있기 때문에 본문이 표시되지 않습니다.부정한 도메인은 요구가 타임아웃 될 때까지 대기하기 때문에 항상 시간이 걸릴 수 있습니다.아마 cURL을 사용하여 타임아웃 길이를 변경할 수 있습니다.
다음은 예를 제시하겠습니다.
function remoteFileExists($url) {
$curl = curl_init($url);
//don't fetch the actual page, you only want to check the connection is ok
curl_setopt($curl, CURLOPT_NOBODY, true);
//do request
$result = curl_exec($curl);
$ret = false;
//if request did not fail
if ($result !== false) {
//if request was ok, check response code
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode == 200) {
$ret = true;
}
}
curl_close($curl);
return $ret;
}
$exists = remoteFileExists('http://stackoverflow.com/favicon.ico');
if ($exists) {
echo 'file exists';
} else {
echo 'file does not exist';
}
.file_get_contents
리모트 파일에 액세스 하는 기능.상세한 것에 대하여는, http://php.net/manual/en/function.file-get-contents.php 를 참조해 주세요.
컬을 사용하고 있는 경우는, 다음의 스크립트를 시험할 수 있습니다.
function checkRemoteFile($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
// don't download content
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if(curl_exec($ch)!==FALSE)
{
return true;
}
else
{
return false;
}
}
레퍼런스 URL : https://hungred.com/how-to/php-check-remote-email-url-image-link-exist/
다음을 수행합니다.
if (file_exists(FCPATH . 'uploads/pages/' . $image)) {
unlink(FCPATH . 'uploads/pages/' . $image);
}
이미지 경로가 애플리케이션 루트에 상대적인 경우 다음과 같은 방법을 사용하는 것이 좋습니다.
function imgExists($path) {
$serverPath = $_SERVER['DOCUMENT_ROOT'] . $path;
return is_file($serverPath)
&& file_exists($serverPath);
}
이 기능의 사용 예:
$path = '/tmp/teacher_photos/1546595125-IMG_14112018_160116_0.png';
$exists = imgExists($path);
if ($exists) {
var_dump('Image exists. Do something...');
}
다양한 상황에 맞는 이미지의 존재를 확인하기 위해 도서관 같은 것을 만드는 것이 좋다고 생각합니다.이 작업을 해결하기 위해 사용할 수 있는 수많은 훌륭한 답변.
여기 URL을 확인할 때 사용하는 기능이 하나 있습니다.응답 코드의 URL 유무를 확인합니다.
/*
* Check is URL exists
*
* @param $url Some URL
* @param $strict You can add it true to check only HTTP 200 Response code
* or you can add some custom response code like 302, 304 etc.
*
* @return string or NULL
*/
function is_url_exists($url, $strict = false)
{
if (is_int($strict) && $strict >= 100 && $strict < 600 || is_array($strict)) {
if(is_array($strict)) {
$response = $strict;
} else {
$response = [$strict];
}
} else if ($strict === true || $strict === 1) {
$response = [200];
} else {
$response = [200,202,301,302,303];
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($ch);
if (!curl_errno($ch) && $return !== false) {
return ( in_array(curl_getinfo($ch, CURLINFO_HTTP_CODE), $response) !== false );
}
return false;
}
이게 바로 네게 필요한 거야.
"HTTP" 를 사용하여 에서 첫 5 .fopen()
★★★★★★★★★★★★★★★★★」fread()
뭇매를 맞다
DEFINE("GIF_START","GIF");
DEFINE("PNG_START",pack("C",0x89)."PNG");
DEFINE("JPG_START",pack("CCCCCC",0xFF,0xD8,0xFF,0xE0,0x00,0x10));
이미지를 검출합니다.
file_exists
경로도 수 .★★★★★★★★★★★★★★★★★★,$filename
같이 됩니다.
file_exists("http://www.example.com/images/")
/directory 존재하는 , 는 「/disc/discounted」를 합니다.true
.
보통은 이렇게: 쓴다
// !empty($filename) is to prevent an error when the variable is not defined
if (!empty($filename) && file_exists("http://www.example.com/images/$filename"))
{
// do something
}
else
{
// do other things
}
file_exists($filepath)
디렉터리와 전체 filepath로 들어갈 때 파일 이름을 전달되지 않습니다가 아니항상 해결책은 진정한 결과를 반환할 것이다.
is_file($filepath)
filepaths "filepaths" 에 합니다.
file_path를 가진 서버 경로가 필요합니다.
예를들면
if (file_exists('/httpdocs/images/'.$filename)) {echo 'File exist'; }
if(@getimagesize($image_path)){
...}
나한텐 효과가 있어
시험해 보세요:
$imgFile = 'http://www.yourdomain.com/images/'.$fileName;
if (is_file($imgFile) && file_exists($imgFile)) {
echo 'File exists';
} else {
echo 'File not exist';
}
다른 방법:
$imgFile = 'http://www.yourdomain.com/images/'.$fileName;
if (is_file($imgFile)) {.....
}
언급URL : https://stackoverflow.com/questions/7991425/php-how-to-check-if-image-file-exists
'sourcecode' 카테고리의 다른 글
nodejs 스크립트가 정상적으로 실행된 후 자동으로 종료되지 않음 (0) | 2022.09.19 |
---|---|
PHP에서 이메일 주소를 확인하는 방법 (0) | 2022.09.19 |
MySQL ON 중복 키 - 마지막 삽입 ID? (0) | 2022.09.18 |
String 클래스는 + 연산자를 어떻게 덮어쓰나요? (0) | 2022.09.18 |
날짜를 지정하면 요일을 어떻게 알 수 있나요? (0) | 2022.09.18 |