#navi(../)
* ファイル内容からMIMEタイプを確認する方法・finfo_file [#s249547e]
PHPのfinfo_file関数を使用することにより、ファイルのMIMEタイプを取得することができます。~
以下にPHPのサンプルコードを含め説明します。~
使用した環境は、Ubuntu12.04になります。~
PHPは以下のコマンドでPHP CLIが動作するようにパッケージをインストールしました。
 sudo apt-get install php5-cli

#contents
#htmlinsertpcsp(web-top.html,web-sp.html)

* finfo_file, finfo_openを使ったPHPサンプルスクリプト [#u11fbaec]
以下にMIMEタイプを調べたい場合のPHPサンプルスクリプトを記します。
 <?php
 $filename = "MIMEタイプを調べたいファイル";
 $finfo = finfo_open(FILEINFO_MIME_TYPE);
 echo finfo_file($finfo, $filename)
 finfo_close($finfo);
 ?>

上記のPHPサンプルスクリプトを簡単に説明します。
+ $filenameにMIMEタイプを調べたいファイル名を指定します。
+ finfo_open, finfo_file関数を使い、指定したファイル名のMIMEタイプを表示します。


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

** PHPサンプルスクリプト [#z35fc397]
引数で渡されたファイル名のMIMEタイプを表示するサンプルスクリプトです。
#ref(mimetype.php)
 <?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 [#c101574d]
-対象ファイル
 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 [#ud0ee7c5]
-拡張子を変更する
 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タイプを確認する方法でした。

#htmlinsertpcsp(web-btm.html,web-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS