前一段時間做了一個圖片上傳的小程式,今天有人說jpg圖片上傳不了。我在本地Chrome、Firefox測了下,發現沒有問題,上傳正常。我問他用什麼瀏覽器,原來是世界之窗、還有360......我囧。我想,是不是IE的問題?於是我在IE下測了,果然不行。原來的程式如下:
switch($type){case "image/jpeg":$resultImage = imagecreatefromjpeg($original);imagejpeg($resultImage, $target, $quality); break;case "image/png":$resultImage = imagecreatefrompng($original);imagepng($resultImage, $target, $quality_png);break;case "image/gif":$resultImage = imagecreatefromgif($original);imagegif($resultImage, $target, $quality);break;default :die("不支援此檔案類型"); exit;}
後來google了下,發現關於jpg格式的圖片在IE下確實有些差異。
在IE下上傳一副jpg圖片,然後列印該上傳檔案的資訊如下:
Array([name] => bkjia.jpg[type] => image/pjpeg[tmp_name] => /tmp/phprY0loE[error] => 0[size] => 71189)
jpg格式的圖片的Mimetype為image/pjpeg。由於開發中都用Chrome或者Firefox開發,在判斷時並沒有加image/pjpeg,所以導致jpg格式的圖片在IE核心的瀏覽器無法被識別。
下面是各格式圖片在不同瀏覽器中的格式對照:
firefox image/jpeg image/bmp image/gif image/pngie 6 image/pjpeg image/bmp image/gif image/x-pngie 7 image/pjpeg image/bmp image/gif image/x-pngie 8 image/pjpeg image/bmp image/gif image/x-png
傳圖片時,ie會把 jpg、jpeg翻譯成image/pjpeg,png翻譯成image/x-png 。而Firefox則很標準:jpg、jpeg翻譯成image/jpeg,png翻譯成image/png。
程式改成這樣就OK了。
switch($type){case "image/jpeg":$resultImage = imagecreatefromjpeg($original);imagejpeg($resultImage, $target, $quality); break;case "image/pjpeg":$resultImage = imagecreatefromjpeg($original);imagejpeg($resultImage, $target, $quality); break;case "image/png":$resultImage = imagecreatefrompng($original);imagepng($resultImage, $target, $quality_png);break;case "image/gif":$resultImage = imagecreatefromgif($original);imagegif($resultImage, $target, $quality);break;default :die("不支援此檔案類型"); exit;}
http://www.bkjia.com/PHPjc/752535.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/752535.htmlTechArticle前一段時間做了一個圖片上傳的小程式,今天有人說jpg圖片上傳不了。我在本地Chrome、Firefox測了下,發現沒有問題,上傳正常。我問他用什...