PHPでアップロードしたファイルタイプ取得

このエントリーをはてなブックマークに追加
はてなブックマーク - PHPでアップロードしたファイルタイプ取得
LINEで送る
Pocket

ユーザがブラウザからファイルをアップロードした際に、サーバでファイルタイプをチェックする方法。

おおまかに、ブラウザの環境変数から検証する方法と、サーバ側でチェックする方法がある。

簡単にチェック

まず、$_FILES変数にファイルタイプが設定されているのでこれを使う例。
typeというキーに入っています。

しかしながら、ブラウザによってこの値は異なります。(Windows VistaでCSVファイルをアップロードして検証)
Chromeに至っては、null。。。。

  • FF3:text/comma-separated-values
  • IE7:application/octet-stream
  • Opera: text/comma-separated-values
  • safari: application/octet-stream
  • chrome: null

type変数を信じる場合は、メジャーなブラウザの場合は以下のコードで検証できます。これは、ブラウザ出力を信頼する場合。

しっかりチェック

サーバ側でちゃんとやるためには、Fileinfoライブラリを使う。
FileinfoはPECLで提供されている。libmagicライブラリに依存している。

php.iniに以下を追加して、サーバ再起動。

以下のように書けば、ファイルタイプを返してくれる。

判定は以下のように。

このエントリーをはてなブックマークに追加
はてなブックマーク - PHPでアップロードしたファイルタイプ取得
LINEで送る
Pocket

matsubokkuri

Please feel free to contact me via e-mail, twitter and facebook!

あわせて読みたい

コメントを残す