2009-08-27 39 views
1

私は困惑しています。私はInternet Explorerを除くすべてのブラウザで動作する画像アップロードプロセスを作成しました。私はIE7をチェックしなかったがIE8はファイルの拡張子をチェックしないようだ。私はエラーを取得し続ける "あなたはjpg、gif、bmpをアップロードする必要があります。ファイルのアップロードはIEでは動作しませんが、FF、Chrome、Safariで動作します

あなたはファイル拡張子ではなく、画像と一緒に送られたヘッダをチェックする必要がありますどのように私は悪IEでこの事の作業を行うことができます
/* image uploading */ 
    $target_path = "img/"; 
    $image = $_FILES['crebusimage']; 
    $image['name'] = mysql_real_escape_string($image['name']); 
    $target_path .= $crebustime."_".$image['name']; 
    $valid_types = array("image/jpg", "image/jpeg", "image/bmp", "image/gif", "image/jpe", "image/jfif", "image/png"); 

    $field = 'crebusimage'; 
    if(strlen($image['name']) == 0){ 
    $form->setError($field, "*please choose an image"); 
    }elseif(!in_array($image['type'], $valid_types)){ 
    $form->setError($field, "*You must upload a jpg, gif, or bmp"); 
    }else{ 
    $busimg = $crebustime."_".$image['name']; 
    move_uploaded_file($image['tmp_name'], $target_path); 
    } 

    <td><b>Business Logo<br />(100Kb or less 100x100px)</b></td> 
    <td><input type="file" name="crebusimage" value="1"></td> 
    <td><input type="hidden" name="MAX_FILE_SIZE" value="100000" /></td> 
    <td><?php echo $form->error('crebusimage'); ?></tD> 

...

答えて

2

は、あなたがこれを実行して、$ _FILES配列で取得しているものを参照してください。

+0

は私が取得しています: アレイ ( [名] => image.jpeg [タイプ] =>画像/ pjpeg [tmp_name] =>の/ var/tmpに/ php78z4j9 [エラー] => 0 [サイズ] => 3026 ) pjpegとは何ですか? jpegではなく... –

+0

@ivannovak - 今、問題を見ることができます。あなたの$ valid_types配列にはpjpeg MIMEタイプはありません。 "image/pjpeg"を追加すれば動作します! – karim79

1

。たぶんIEは偽造されているかもしれないので、これらを送信しないかもしれません。

echo '<pre>'; 
print_r($_FILES); 
echo '</pre>'; 

と@Juddlingが正しく指摘したようにMIMEタイプを詐称することができますよう、画像の種類を決定するために getimagesizeを使用します。

+0

ファイルの拡張子を調べるにはどうすればよいのですか?私はimage ['type']で行っていたと思っていました。 –

+0

$ filename = basename($ _ FILES ['uploadedfile'] ['name']); $ ext = substr($ filename、strrpos($ filename、 '。')+ 1); \t if($ ext == "jpg" || $ ext == "png" || $ ext == "gif"){// then extentionを確認してください } – Juddling

+0

いいえ。あなたは、JPGとして保存されているpng/gifの数とその逆を驚かせるでしょう。あなたは本当にヘッダーを見たいと思っています。 –

4

あなたはJPEGファイルをアップロードする場合、それらは一般的にIEでのMIMEタイプの画像/ pjpegに送信されます。

具体的には、この問題がcsvファイルで発生しました。 Windowsマシンは、csvファイルを開くためにインストールしたものに応じて、さまざまなMIMEタイプを提供します。/endgripe;)

+0

IEでは、難しいため、ファイルタイプの先頭にpを追加しますか?ありがとうございました... –

+0

教えてください。私はしばらくの間、ミメテイプを信用していない。代わりに、mimetype文字列のjpeg、png、bmp、またはgifのインスタンスを探すだけで、それは見た目にも機能します!= -1 –

関連する問題