最速怪談選手権

スマートフォン用サイトで画像のアップロード機能を実装しようと思っています。

PCサイト用に作成したものをそのまま流用しようと思ったのですが、
うまくいきませんでした。
対応する画像はjpg,gif,pngの三種類です。

下記がPC用のソースです。

<form action="edit_url" method="POST" enctype="multipart/form-data">
<input type="file" name="Img" size="10">
</form>

フォーム受け取り先で

if(is_uploaded_file($_FILES['Img']['tmp_name'])){
//jpg,gif,png以外のファイルの場合はエラー
if($_FILES['Img']['type'] != "image/pjpeg"
AND $_FILES['Img']['type'] != "image/jpeg"
AND $_FILES['Img']['type'] != "image/png"
AND $_FILES['Img']['type'] != "image/gif"){
echo "エラー";
}
}

とすると「エラー」が表示されます。
$_FILES['Img']['type']
の中身を見ると
「application/octet-stream」
になっていました。

試してみた端末はandroid4.0の端末で、デフォルトブラウザを使用しました。

スマートフォンから画像をアップロードするには、
どのようにしたらよいのでしょうか。

A 回答 (2件)

http://www.php.net/manual/ja/features.file-uploa …
詳しくはリファレンスで。

$_FILES['userfile']['type']
ファイルの MIME 型。ただし、ブラウザがこの情報を提供する場合。 例えば、"image/gif" のようになります。 この MIME 型は PHP 側ではチェックされません。そのため、 この値は信用できません。

MIMEをチェックするときはこちらですね。
http://www.php.net/manual/ja/function.finfo-file …
    • good
    • 0
この回答へのお礼

$_FILES['type']が信用出来ないというのは初めて聞きました。
ありがとうございました!

お礼日時:2013/08/09 11:31

既に回答にあるとおり、$_FILES['Img']['type']は信用してはいけません。



こちらをお読みください。
http://qiita.com/mpyw/items/939964377766a54d4682
http://qiita.com/mpyw/items/73ee77a9535cc65eff1e
    • good
    • 0
この回答へのお礼

詳細URL記載いただき、ありがとうございました。
ソースの修正しようと思います。

お礼日時:2013/08/09 11:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!