PHP でファイルの Content-Type を確認するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-19 13:44:02
オリジナル
255 人が閲覧しました

How Can I Determine the Content-Type of a File in PHP?

PHP でのファイルの Content-Type の決定

添付ファイル付きの電子メールを送信する場合、正しいコンテンツを指定することが重要ですそのファイルのタイプ。これにより、電子メール クライアントがファイルを適切に処理できるようになります。 PHP では、さまざまなメソッドを使用してコンテンツ タイプを取得できます。

「finfo_file()」の使用 (推奨)

PHP バージョンが finfo 拡張子をサポートしている場合は、 「finfo_file()」を利用してファイルの MIME タイプを取得できます。以下に例を示します。

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$contentType = finfo_file($finfo, $file);
finfo_close($finfo);
ログイン後にコピー

'mime_content_type()' の使用

'finfo_file()' の古い代替手段は、'mime_content_type()' 関数です。ただし、すべての PHP バージョンで利用できるわけではありません。

require_once 'upgradephp/ext/mime.php'; // Load the mime extension if necessary
$contentType = mime_content_type($file);
ログイン後にコピー

フォールバック オプション

上記のどちらの方法でも信頼できる結果が得られない場合は、次の使用を検討してください。これらのフォールバック オプション:

  • exec('file -b --mime-type ...'): ファイルに対して「file」コマンドを実行して、その MIME タイプを取得します。このメソッドは *NIX システムで動作します。
  • exif_imagetype(): ファイルが画像の場合、この関数はその MIME タイプを決定できます。
  • 'upgradephp /ext/mime.php': Upgrade.php は、ギャップを埋めることができるフォールバック mime_content_type() 関数を提供します古い PHP バージョンの場合。

使用例

これらのオプションをすべて組み合わせた例を次に示します。

function getFileMimeType($file) {
    $contentType = null;

    if (function_exists('finfo_file')) {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $contentType = finfo_file($finfo, $file);
        finfo_close($finfo);
    } elseif (function_exists('mime_content_type')) {
        require_once 'upgradephp/ext/mime.php';
        $contentType = mime_content_type($file);
    } elseif (is_file($file)) {
        // Executing 'file' command
    } elseif (@exif_imagetype($file)) {
        // Determining image mime type
    }

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

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

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