7

一部のファイルが実際に画像であるかどうかを判断しようとしています (PHP を使用)。finfo を使用するように勧められており、その仕組みを理解しようとしています。

私が得られないのは、マジック ナンバー データベースとは何か、またどのように機能するのかということです。私は少し困惑しています.各ファイルには、そのデータベースと比較する特定の「マジックナンバー」がありますか?

また、debian スクイーズで使用していますが、WIN プラットフォームでも使用できますか? または、アプリと一緒にそのデータベースを接続する必要がありますか?

<?php
$finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic.mgc");
if (!$finfo) {
    echo "Opening fileinfo database failed";
    exit();
}

/* get mime-type for a specific file */
$filename = "/usr/local/something.txt";
echo $finfo->file($filename);

?>
4

3 に答える 3

6

ほとんどのファイル形式には、ファイルの種類を識別するのに役立つヘッダーがあります。たとえば、GIF ファイルは常にGIF87

マジック ナンバー データベースはすべてのヘッダーのリストでありfinfo()、ファイルを識別できます。

Windows には、既定でこのデータベースがインストールされていません。窓用に持っていく必要があります。実際、クロス プラットフォームの互換性を向上させるために、デプロイする場所に関係なく、同じデータベースを使用する必要があります。開発プラットフォームが理解できるファイルタイプを認識していない古いシステムにデプロイした場合を想像してみてください。

于 2011-05-16T23:15:06.260 に答える
1

別の解決策は、exif_imagetypeが返されるかどうかを確認することfalseでしょうか?

于 2011-05-16T23:17:12.337 に答える
1

私のUbuntuでは、/usr/share/file/magic.mime. Windowsについてはわかりません。はい、通常、さまざまなファイル形式には、この目的のためだけに特定のプレフィックスがあります (拡張子がない場合でも、たとえば、GIF は常に "GIF" という文字列で始まるという事実によって認識できます)。

于 2011-05-16T23:18:32.633 に答える