curl 如何从url检查文件是否存在

d5vmydt9  于 2022-11-13  发布在  其他
关注(0)|答案(8)|浏览(314)

我需要检查远程服务器上是否存在某个特定文件。使用is_file()file_exists()不起作用。有什么方法可以快速轻松地完成此操作吗?

6ie5vjzr

6ie5vjzr1#

你不需要CURL......只是想检查一个文件是否存在的开销太大了......
请使用PHP's get_header

$headers=get_headers($url);

然后检查$result[0]是否包含200 OK(这意味着文件在那里)
检查URL是否有效的函数可以是:

function UR_exists($url){
   $headers=get_headers($url);
   return stripos($headers[0],"200 OK")?true:false;
}

/* You can test a URL like this (sample) */
if(UR_exists("http://www.amazingjokes.com/"))
   echo "This page exists";
else
   echo "This page does not exist";
ipakzgxi

ipakzgxi2#

您必须使用CURL

function does_url_exists($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_exec($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if ($code == 200) {
        $status = true;
    } else {
        $status = false;
    }
    curl_close($ch);
    return $status;
}
arknldoa

arknldoa3#

我刚刚找到了这个解决方案:

if(@getimagesize($remoteImageURL)){
    //image exists!
}else{
    //image does not exist.
}

来源:http://www.dreamincode.net/forums/topic/11197-checking-if-file-exists-on-remote-server/

ttygqcqt

ttygqcqt4#

嗨,根据我们在2台不同服务器之间进行的测试,结果如下:
使用curl检查10.png文件(每个文件大约5 mb)平均需要5.7秒。使用头文件检查同样的文件平均需要7.8秒!
所以在我们的测试中,如果你必须检查更大的文件,curl要快得多!
我们旋度函数是:

function remote_file_exists($url){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if( $httpCode == 200 ){return true;}
    return false;
}

下面是我们的标题检查示例:

function UR_exists($url){
   $headers=get_headers($url);
   return stripos($headers[0],"200 OK")?true:false;
}
bwntbbo3

bwntbbo35#

您可以使用函数file_get_contents();

if(file_get_contents('https://example.com/example.txt')) {
    //File exists
}
ulmd4ohb

ulmd4ohb6#

用curl请求,看它是否返回404状态码,用HEAD请求方法请求,这样它只返回头而不返回体。

yrdbyhpb

yrdbyhpb7#

$file = 'https://picsum.photos/200/300';
$file_headers = @get_headers($file);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
    $exists = false;
}
else {
    $exists = true;
}
ecbunoof

ecbunoof8#

$headers = get_headers((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://" . $_SERVER[HTTP_HOST] . '/uploads/' . $MAIN['id'] . '.pdf');
    $fileExist = (stripos($headers[0], "200 OK") ? true : false);
    if ($fileExist) {
    ?>
    <a class="button" href="/uploads/<?= $MAIN['id'] ?>.pdf" download>скачать</a> 
    <? }
    ?>

相关问题