【问题标题】:alternative to finfo() for php < 5.3php < 5.3 的 finfo() 的替代品
【发布时间】:2011-07-20 21:18:17
【问题描述】:
<?php 
$finfo = new finfo();
$fileinfo = $finfo->file($_FILES["fileToUpload"]["tmp_name"], FILEINFO_MIME);

switch($fileinfo) {
    case "image/gif":
    case "image/jpeg":
    case "image/png":
       move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
    "upload/" . $_FILES["fileToUpload"]["name"]);
    echo "Your file has successfully been uploaded, and is awaiting moderator approval for points." . "<html><br><a href='uploadfile.php'>Upload more.</a>";
    break;
     default:
     echo "Files must be either JPEG, GIF, or PNG and less than 10,000 kb";

        break;
        }


?>

最近引起了我的注意,这里没有任何问题,它只是不起作用,因为我的服务器 php 只有 5.2 让我知道你们是否可以找到一种使用 MIME 使其工作的方法

【问题讨论】:

    标签: php


    【解决方案1】:

    pecl install fileinfo?

    http://pecl.php.net/package/Fileinfo

    【讨论】:

    • 我没有自己的服务器。无论如何在旧版本的php中包含该函数
    【解决方案2】:

    在 Linux 服务器上你可以偷懒使用:

     $type = exec("file -iL " . escapeshellcmd($fn) . " 2>/dev/null");
     $type = trim(strtok(substr(strrchr($type, ":"), 1), ";"));
    

    【讨论】:

      【解决方案3】:

      mime_content_type 可能仍然适合您。虽然它现在位于手册中的 fileinfo 部分下,但它在 fileinfo 被引入 PHP 核心之前就存在了方式

      请注意,如果您的主机将 Apache 的 mime.types 文件移出正常位置(如该页面上的 cmets 中所述),则可能需要进行一些配置。

      【讨论】:

        【解决方案4】:

        注意:我知道这并不能直接回答有关 PHP 版本的问题。但是,我在尝试解决我的问题时发现了这篇文章,因此它可能对将来的某人有所帮助。

        我最近在尝试验证 MP3 文件时也一直在努力使用 Fileinfo 库。我了解到有一些 known issues 带有 Fileinfo 和 MP3 文件,即使您已为您的环境正确设置了魔术数据库文件。

        如果Fileinfo 无法确定 MP3 的 mime 类型,它可能会返回 application/octet-stream。在尝试验证文件时不是很有帮助。

        作为替代方案,我已开始使用以下系统命令。这与@mario 的建议非常相似,到目前为止 似乎比Fileinfo 更可靠。

        $path = 'path/to/your/mp3/file.mp3';
        $mime = exec('file -b --mime-type ' . $path);
        

        我已经在 Ubuntu 10.04 和 OSX Mountain Lion 上对此进行了测试,所以我猜它适用于大多数 Unix 环境。我相信也有一些 Windows 端口。

        说实话,我不完全确定这种方法有多安全或可靠,但我在 Stackoverflow 上看到它推荐 a few times here。如果有人有更多信息,请分享!

        【讨论】:

          猜你喜欢
          • 2010-12-04
          • 2011-01-16
          • 2011-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-17
          • 2011-05-29
          • 2017-11-09
          • 1970-01-01
          相关资源
          最近更新 更多