PHPプログラミング

レシピ

ファイル / ディレクトリ

ファイルの種類(MIMEタイプ)を確認する

Fileinfo関数を使って、ファイルの種類(MIMEタイプ)を取得する方法について解説します。

この記事のポイント

  • ファイルの種類を調べるために、Fileinfo関数でMIMEタイプを取得する
  • 3通りの方法でMIMEタイプを取得する

目次

ファイルのMIMEタイプを正確に調べる

ファイルにはJPEGやPNGなどの画像ファイル、HTMLやXMLなどのテキストファイル、動画ファイル、音源ファイルなど様々な種類があります。
どんな種類のファイルかを正確に知りたいときは、ファイルのMIMEタイプを調べます。

MIMEタイプを調べるもっとも手軽な方法は、mime_content_type関数を使うことです。

コード例

mime_content_type("images/test.jpg");

返り値として「image/jpeg」や「text/plain」など、ファイルのMIMEタイプを文字列で返します。

具体的な用途は、ファイルアップロード機能を実装した時に「$_FILES」に入っているファイルのMIMEタイプを確認するケースです。

使用例

mime_content_type関数を使う以外にも、次の2通りの方法があります。
取得できる内容は同じですが、ファイルの種類を調べる以外の処理に応じて使う方法を選択してください。

finfoクラスを使う

finfoクラスのインスタンスを生成し、メソッドを通じてMIMEタイプを取得する方法です。

コード例

// ファイルサイズを調べたいファイルへのパス
$path = '/images/pic.jpg';

// finfoクラスを使う
$finfo = new finfo();
echo $finfo->file( $path, FILEINFO_MIME_TYPE);

出力例

image/jpeg

まず「new finfo();」の部分でfinfoクラスのインスタンスを作成し、その後にfileメソッドでMIMEタイプを取得します。

fileメソッドの第一パラメータはファイルのパス、第二パラメータは「取得する情報の定数」です。
今回はMIMEタイプを取得するために「FILEINFO_MIME_TYPE」を指定していますが、MIMEエンコーディングを取得する「FILEINFO_MIME_ENCODING」、ファイルにあった拡張子を返す「FILEINFO_EXTENSION」などが定義されています。
定義された定数について詳しくは、php.netの「定義済み定数」をご覧ください。

fileinfoリソースを使う

fileinfoリソースを生成してファイルのMIMEタイプを取得する方法です。

コード例

// ファイルサイズを調べたいファイルへのパス
$path = '/images/pic.jpg';

$file = finfo_open();
echo finfo_file($file, $path, FILEINFO_MIME_TYPE);
finfo_close($file);

最初に、finfo_open関数fileinfoリソースを取得して$fileへ格納します。
クラスのインスタンスを作成する手順と非常によく似ています。

続いて、finfo_file関数に先ほど取得したfileinfoリソース、ファイルへのパス、定数の順に指定します。
最後の定数は先ほどのfinfoクラスで使用したものと同一です。
そのため、ここの定数を変更すれば取得できる情報が同様に変わります。

最後にfinfo_close関数fileinfoリソースを閉じて終了です。
ファイルの種類を調べるだけにしてはやや手順が多いため、他の情報も取得したいときに使用する方法になります。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。