フォームからは全ての種類のファイルをアップロードできます。
期待した形式ではないファイルを送られた場合は、なんらかの処理をしなければならなくなります。
そんな場合でも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なら「テキストです。」
と表示を変更できます。
次回はアップロードされたファイルが期待したファイルでは無かった場合に、前のページのフォームに戻る方法を書きます。