QQ爹の博客 QQ爹の博客

php判断文件是否存在

in 代码相关 文章转载请注明来源!

最近博客需要这么个功能,最初是想用file_exists()来判断本地文件的,奈何地址那里我填的是“http://qqdie.com/usr/themes/Themia/img/sj/85.jpg”这货,因为我的错误填写,让我以为是主机的毛病,于是改用
fopen()方法,这个在我的韩国主机上没有问题,可我博客在的香港主机却死活不好使,问了客服说是@ 这个符号会消灭所有返回,建议我用CURL 方法,还没等我开始用,客服又说了:你不会是想判断本地文件吧? 我的回答当然是肯定的了。客服又说用file_exists()方法即可,然后我就把我错误的写法发了过去,质疑,然后客服就告诉了我问题所在。

最为一个{小 白|da bai},我要勇于记住这个错误,所以写这么一篇文章,也许也能帮助到同样小白的你。

对于本地服务器文件

 <?php
    $url = 'usr/themes/Themia/img/sj/85.jpg';
    if( file_exists($url) )
    {
        echo '存在';
    }
    else
    {
        echo '不存在';
    }
    ?>

对于远程文件的判断
fopen()方法:

<?php
    $url = 'http://qqdie.com/test.jpg';
 
    if( @fopen( $url, 'r' ) )
    {
        echo '存在';
    }
    else
    {
        echo '不存在';
    }
    ?>

CURL 方法:

<?php
    $url2 = 'http://www.qqdie.com/test.jpg';
 
    $ch = curl_init();
    $timeout = 10;
    curl_setopt ($ch, CURLOPT_URL, $url2);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
 
    $contents = curl_exec($ch);
    //echo $contents;
    if (preg_match("/404/", $contents)){
        echo '文件不存在';
    }
    ?>
jrotty WeChat Pay

微信打赏

jrotty Alipay

支付宝打赏

文章二维码

扫描二维码,在手机上阅读!

版权声明:本文基于《知识共享署名-相同方式共享 3.0 中国大陆许可协议》发布,转载请遵循本协议
文章链接:https://qqdie.com/archives/php-to-determine-whether-the-file-exists.html (转载时请注明本文出处及文章链接)

代码php
发表新评论
已有 10 条评论
  1. Roogle
    RoogleWindows 10谷歌浏览器
    回复

    才了你的坑,对于博客来说基本上调用并不频繁,采用file_exits函数即可,完美型人格的技术控建议使用is_file函数,不过还是感谢博主此篇文章

  2. asd
    asdWindows 10谷歌浏览器
    回复

    curl有点占资源。╮( ̄▽ ̄)╭

    1. Jrotty
      JrottyWindows 10谷歌浏览器
      回复

      @asd 我实际就需要的判断本地文件!下边那个顺便记录下╮( ̄▽ ̄)╭

    2. asd
      asdWindows 10谷歌浏览器
      回复

      @asd 我是指远程文件,本地我也是用file_exists,远程用fopen或file_get_contents

    3. Jrotty
      JrottyWindows 10谷歌浏览器
      回复

      @asd 我是用file_exists的

  3. 爱国者捣蛋
    爱国者捣蛋Windows 10谷歌浏览器
    回复

    对于自己博客的图片可以转成本地判断,毕竟网络连接耗时多一点
    $file = str_replace($this->options->siteUrl,"",$file);
    if (strpos($file,"http://")!=false) {
    //curl的方法或fopen
    }else{
    //file_exist()
    }

    1. 近泽
      近泽Windows 10谷歌浏览器
      回复

      @爱国者捣蛋 嗯嗯,我只是判断下本地内置的缩略图存在与否,用稳重的第一个就好了 (ノ≧∇≦)ノ

  4. 夏风轻顾
    夏风轻顾Windows 10谷歌浏览器
    回复

    我以前一直这样写的2333
    @ $file = fopen(\"$url","rb"); if(!$file){ echo \'exist\'; } else { echo \'not exist\'; }

    1. 夏风轻顾
      夏风轻顾Windows 10谷歌浏览器
      回复

      @夏风轻顾 感觉都差不多的样子~

    2. 近泽
      近泽Windows 10谷歌浏览器
      回复

      @夏风轻顾 哪种写法比较好呢

PREVIOUS NEXT
雷姆
拉姆
0:00