このエントリーをはてなブックマークに追加


ファイル内容からMIMEタイプを確認する方法・finfo_file

PHPのfinfo_file関数を使用することにより、ファイルのMIMEタイプを取得することができます。
以下にPHPのサンプルコードを含め説明します。
使用した環境は、Ubuntu12.04になります。
PHPは以下のコマンドでPHP CLIが動作するようにパッケージをインストールしました。

sudo apt-get install php5-cli

スポンサーリンク

finfo_file, finfo_openを使ったPHPサンプルスクリプト

以下にMIMEタイプを調べたい場合のPHPサンプルスクリプトを記します。

<?php
$filename = "MIMEタイプを調べたいファイル";
$finfo = finfo_open(FILEINFO_MIME_TYPE);
echo finfo_file($finfo, $filename)
finfo_close($finfo);
?>

上記のPHPサンプルスクリプトを簡単に説明します。

  1. $filenameにMIMEタイプを調べたいファイル名を指定します。
  2. finfo_open, finfo_file関数を使い、指定したファイル名のMIMEタイプを表示します。

実行例

bmp, jpg, zipファイルを指定し、実際に試してみます。
拡張子を変更しても正常にMIMEタイプが判別されているのが確認できます。
(つまり、ファイル内容を確認しMIMEタイプを表示している。)

PHPサンプルスクリプト

引数で渡されたファイル名のMIMEタイプを表示するサンプルスクリプトです。

<?php

if ($argc == 1) {
  echo "Usage: php $argv[0] filename ...\n";
  exit(1);
}

$finfo = finfo_open(FILEINFO_MIME_TYPE);
for ($i=1; $i<$argc; $i++) {
  $filename = $argv[$i];
  printf("filename=%s, MIME=%s\n", $argv[$i], finfo_file($finfo, $filename));
}
finfo_close($finfo);

?>

実行結果1

  • 対象ファイル
    sakura@ubuntu:~$ ls -l
    合計 12
    -rw-r--r-- 1 sakura sakura  58 12月 13 11:07 bitmap.bmp
    -rw-r--r-- 1 sakura sakura 631 12月 13 11:07 jpeg.jpg
    -rw-r--r-- 1 sakura sakura 383 12月 13 11:07 zipfile.zip
  • 実行結果
    sakura@ubuntu:~$ php mimetype.php bitmap.bmp jpeg.jpg zipfile.zip
    filename=bitmap.bmp, MIME=image/x-ms-bmp
    filename=jpeg.jpg, MIME=image/jpeg
    filename=zipfile.zip, MIME=application/zip

実行結果2

  • 拡張子を変更する
    sakura@ubuntu:~$ mv bitmap.bmp bitmap.foo
    sakura@ubuntu:~$ mv jpeg.jpg jpeg.bar
    sakura@ubuntu:~$ mv zipfile.zip zipfile.hoge
  • 実行結果
    sakura@ubuntu:~$ php mimetype.php bitmap.foo jpeg.bar zipfile.hoge
    filename=bitmap.foo, MIME=image/x-ms-bmp
    filename=jpeg.bar, MIME=image/jpeg
    filename=zipfile.hoge, MIME=application/zip
    上記の実行結果を確認すると拡張子で判別しているのではなく、ファイル内容でMIMEタイプを判別していることが確認できます。

以上、finfo_fileを使ってMIMEタイプを確認する方法でした。


スポンサーリンク

添付ファイル: filemimetype.php 186件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:36:04 (1281d)