htmlフォームからアップロードされたファイルの種類を拡張子からphpで判断する方法

この記事がお役に立てたならシェアしてくれると嬉しいです。

フォームからは全ての種類のファイルをアップロードできます。
期待した形式ではないファイルを送られた場合は、なんらかの処理をしなければならなくなります。

そんな場合でもphpには拡張子によって送られたファイルの種類を
判定する為にも文字の比較できる関数があり簡単にできます。

スポンサーリンク

ファイルの種類を判断する方法

まずはファイル名から拡張子のみを取得する関数です。

■pathinfo(ファイル名);

返り値はファイル名を各要素毎に分割した連想配列です。

“dirname” … ディレクトリ名(ファイル名を除いたパス名)
“basename” … ファイル名
“extension” … 拡張子のみ

例1:

<?php
$file=pathinfo("http://test/test.php");
echo $file["dirname"]."<br>";
echo $file["basename"]."<br>";
echo $file["extension"]."<br>";
?>


実行すると以下のように

http://test
test.php
php


と分割された物が表示されます。
次に、これを判別する関数です。

■strcasecmp(文字列1,文字列2);

文字列1と文字列2を比較し同じ場合に数字の「0」を返します。
違う場合は数字の「1」か「-1」返します。

この関数は比較に際して文字列1と文字列2の大文字と小文字の違いを
判定に考慮しません。

つまり「PNG」や「png」や「Png」とかも同じ物として判定します。


この関数を利用すれば保存したいファイルかを判定できます。

例2:

<?php
$file=pathinfo($_FILES["pic"]["name"]);

if(strcasecmp("png",$file["extension"])==0)
{
     print "png画像です。";
}
if(strcasecmp("gif",$file["extension"])==0)
{
     print "gif画像です。";
}
if(strcasecmp("txt",$file["extension"])==0)
{
     print "テキストです。";
}
?>


アップロードされたファイルの拡張子により
それぞれ

pngなら「png画像です。」
gifなら「gif画像です。」
txtなら「テキストです。」

と表示を変更できます。


次回はアップロードされたファイルが期待したファイルでは無かった場合に、前のページのフォームに戻る方法を書きます。

スポンサーリンク

この記事がお役に立てたならシェアしてくれると嬉しいです。


最新記事の更新情報をお届けします。

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)