ファイル内容から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サンプルスクリプトを簡単に説明します。
- $filenameにMIMEタイプを調べたいファイル名を指定します。
- 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:~$ 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タイプを確認する方法でした。
スポンサーリンク