PHP - FileInfo file() 函数



PHP FileInfo finfo_file() 函数用于返回有关文件的信息。它还可以返回文件名参数内容的文本描述,如果发生错误则返回 false。

语法

以下是 PHP FileInfo finfo_file() 函数的语法:

string finfo_file ( resource $finfo , string $file_name [, int $options [, resource $context ]] )

参数

以下是 finfo_file() 函数的参数:

  • $finfo - 它是 finfo_open() 返回的 finfo 实例。

  • $file_name - 这是要检查的文件名。

  • $options - 用于指定一个或多个选项,其默认值为 FILEINFO_NONE。

  • $context - 用于指定由 stream_context_create() 创建的有效上下文资源。

返回值

finfo_file() 函数返回包含检测到的文件类型和 MIME 类型的字符串,失败则返回 FALSE。

PHP 版本

finfo_file() 函数首次出现在核心 PHP 5.3.0 中,在 PHP 7 和 PHP 8 中继续轻松运行。

示例 1

以下是 PHP FileInfo finfo_file() 函数的基本示例,用于获取有关文件的信息。

<?php
   // Return MIME type ala mimetype extension
   $finfo = finfo_open(FILEINFO_MIME);  
   foreach(glob("*") as $filename) {
      echo finfo_file($finfo, $filename) . "\n";
   }
   finfo_close($finfo);
?>

输出

以下是以下代码的结果:

text/html; charset=us-ascii
text/plain; charset=us-ascii
text/csv; charset=us-ascii
text/csv; charset=us-ascii
application/zip; charset=binary
text/plain; charset=us-ascii
text/plain; charset=us-ascii

示例 2

在下面的 PHP 代码中,finfo_file() 函数接受两个参数并返回给定文件的 MIME 类型。

<?php
   // Mention file address here
   $file = '/PHP/PhpProjects/myfile.txt';

   // Create a fileinfo resource
   $finfo = finfo_open(FILEINFO_MIME_TYPE);
   
   // Check if fileinfo resource is valid
   if ($finfo !== false) {
      // Get MIME type
      $info = finfo_file($finfo, $file);
      if ($info !== false) {
         echo "MIME type: $info";
      } else {
         echo "Failed to retrieve MIME type.";
      }
   
      // Close fileinfo resource
      finfo_close($finfo);
   } else {
      echo "Failed to open fileinfo.";
   }
?> 

输出

这将生成以下输出:

MIME type: text/plain

示例 3

下面的代码使用 finfo_file() 和 $context 属性检索远程文件的文件信息。

<?php
   // Mention file path here
   $file = 'https://tutorialspoint.com/sample.pdf';

   // Create a fileinfo resource
   $finfo = finfo_open(FILEINFO_MIME_TYPE);
   
   // Check if fileinfo resource is valid
   if ($finfo !== false) {
      // Get file content
      $file_content = file_get_contents($file, false, $context);
   
      // Get MIME type from file content
      $info = finfo_buffer($finfo, $file_content);
       
      if ($info !== false) {
         echo "MIME type of remote file: $info";
      } else {
         echo "Failed to retrieve MIME type of remote file.";
      }
   
      // Close fileinfo resource
      finfo_close($finfo);
   } else {
      echo "Failed to open fileinfo.";
   }
?> 

输出

这将创建以下输出:

MIME type of remote file: application/pdf

示例 4

在下面的示例中,我们使用 finfo_file() 函数获取带有重定向次数的主 IP 地址。

<?php
   // Mention file path here
   $file = 'nonexistent-file.txt';

   // Check if file exists
   if (file_exists($file)) {
      // Create a fileinfo resource
      $finfo = finfo_open(FILEINFO_MIME_TYPE);
   
      // Check if fileinfo resource is valid
      if ($finfo !== false) {
         // Get MIME type
         $info = finfo_file($finfo, $file);
         if ($info !== false) {
            echo "File type: $info";
         } else {
            echo "Failed to retrieve file information.";
         }
   
         // Close fileinfo resource
         finfo_close($finfo);
       } else {
         echo "Failed to open fileinfo.";
       }
   } else {
      echo "File '$file' does not exist.";
   }
?> 

输出

以下是上述代码的输出:

File 'nonexistent-file.txt' does not exist.

总结

finfo_file() 函数是 PHP 中的内置方法,用于检索文件信息。在本节中,我们看到了四个不同的示例,以更好地理解该函数的用法。

php_function_reference.htm
广告