【问题标题】:PHP check file extension [duplicate]PHP检查文件扩展名[重复]
【发布时间】:2011-11-25 16:37:44
【问题描述】:

我有一个上传脚本,我需要检查文件扩展名,然后根据该文件扩展名运行单独的函数。有人知道我应该使用什么代码吗?

if (FILE EXTENSION == ???)
{
FUNCTION1
}
else if
{
FUNCTION2
}

【问题讨论】:

    标签: php


    【解决方案1】:

    pathinfo 就是你要找的东西

    PHP.net

    $file_parts = pathinfo($filename);
    
    switch($file_parts['extension'])
    {
        case "jpg":
        break;
    
        case "exe":
        break;
    
        case "": // Handle file extension for files ending in '.'
        case NULL: // Handle no file extension
        break;
    }
    

    【讨论】:

    • 没有扩展是什么情况?案例为空?案例“”?
    • 已更新。空字符串"" 用于文件,然后以. 结尾。 NULL 没有文件扩展名。您可以拆分 case 语句,但对于示例,我只是将它们组合在一起。
    【解决方案2】:
    $info = pathinfo($pathtofile);
    if ($info["extension"] == "jpg") { .... }
    

    【讨论】:

    • 我在我网站的一个部分使用了这个代码。但是,当它与echo "$info" 一起执行时,它总是返回值数组。这是为什么呢?
    • @user2910074 这个问题太老了,我会让你看看你的代码,以便提供任何帮助。我建议你在 SO 上发布一个问题
    【解决方案3】:

    对于 php 5.3+ 你可以使用 SplFileInfo()

    $spl = new SplFileInfo($filename); 
    print_r($spl->getExtension()); //gives extension 
    

    此外,由于您正在检查文件上传的扩展名,我强烈建议您使用 mime 类型。

    对于 php 5.3+ 使用 finfo

    $finfo = new finfo(FILEINFO_MIME);
    print_r($finfo->buffer(file_get_contents($file name)); 
    

    【讨论】:

      【解决方案4】:
      $file_parts = pathinfo($filename);
      
      $file_parts['extension'];
      $cool_extensions = Array('jpg','png');
      
      if (in_array($file_parts['extension'], $cool_extensions)){
          FUNCTION1
      } else {
          FUNCTION2
      }
      

      【讨论】:

      • 您可能想要更改in_array 中“针”和“草垛”的顺序。
      【解决方案5】:
      $path = 'image.jpg';
      echo substr(strrchr($path, "."), 1); //jpg
      

      【讨论】:

        【解决方案6】:
          $original_str="this . is . to . find";
          echo "<br/> Position: ". $pos=strrpos($original_str, ".");
          $len=strlen($original_str);
          if($pos >= 0)
          {
            echo "<br/> Extension: ".   substr($original_str,$pos+1,$len-$pos) ;
           } 
        

        【讨论】:

        • @jurchiks this . is . to . find 在大多数操作系统中绝对是一个有效的文件名。
        【解决方案7】:
        $file = $_FILES["file"] ["tmp_name"]; 
        $check_ext = strtolower(pathinfo($file,PATHINFO_EXTENSION));
        if ($check_ext == "fileext") {
            //code
        }
        else { 
            //code
        }
        

        【讨论】:

          猜你喜欢
          • 2014-12-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-07
          • 2012-05-14
          • 1970-01-01
          • 2019-06-08
          相关资源
          最近更新 更多