ホームページ > バックエンド開発 > PHPチュートリアル > PHP でファイルのコンテンツ タイプを確認するにはどうすればよいですか?

PHP でファイルのコンテンツ タイプを確認するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-14 12:19:02
オリジナル
645 人が閲覧しました

How to Determine the Content Type of a File in PHP?

PHP でファイルのコンテンツ タイプを決定する方法

添付ファイル付きの電子メールを送信する場合、ファイルの正しい Content-Type ヘッダーを設定することが重要です。確実に配信され、適切に表示されるように添付ファイルを添付してください。 PHP では、file_get_contents() 関数を使用して添付ファイルのコンテンツを取得できますが、コンテンツ タイプを決定するには追加の手順が必要です。

getFileMimeType() 関数

このタスクを簡素化するには、次の getFileMimeType() 関数の使用を検討してください。

function getFileMimeType($file) {
    if (function_exists('finfo_file')) {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $type = finfo_file($finfo, $file);
        finfo_close($finfo);
    } else {
        require_once 'upgradephp/ext/mime.php';
        $type = mime_content_type($file);
    }

    if (!$type || in_array($type, array('application/octet-stream', 'text/plain'))) {
        $secondOpinion = exec('file -b --mime-type ' . escapeshellarg($file), $foo, $returnCode);
        if ($returnCode === 0 && $secondOpinion) {
            $type = $secondOpinion;
        }
    }

    if (!$type || in_array($type, array('application/octet-stream', 'text/plain'))) {
        require_once 'upgradephp/ext/mime.php';
        $exifImageType = exif_imagetype($file);
        if ($exifImageType !== false) {
            $type = image_type_to_mime_type($exifImageType);
        }
    }

    return $type;
}
ログイン後にコピー

仕組み

この関数は、コンテンツ タイプを決定するためにいくつかの方法を試みます。

  1. finfo_file(): 利用可能な場合は、PHP finfo 関数を使用します。
  2. mime_content_type(): mime_content_type にフォールバックします。 () finfo が利用できない場合の代替手段。
  3. file コマンド: 上記の方法が失敗した場合、MIME タイプを識別するために OS の file コマンドを実行しようとします。
  4. exif_imagetype(): 最後の手段として、exif_imagetype() を使用して画像の MIME タイプを決定します。

これらのメソッドを組み合わせて使用​​することで、この関数は堅牢な方法を提供します。さまざまなファイルタイプのコンテンツタイプを取得します。

以上がPHP でファイルのコンテンツ タイプを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート