程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 在IE上傳JPG圖片的問題

在IE上傳JPG圖片的問題

編輯:關於PHP編程

前一段時間做了一個圖片上傳的小程序,今天有人說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/png
ie 6 image/pjpeg image/bmp image/gif image/x-png
ie 7 image/pjpeg image/bmp image/gif image/x-png
ie 8 image/pjpeg image/bmp image/gif image/x-png

傳圖片時,ie會把 jpg、jpeg翻譯成image/pjpeg,png翻譯成image/x-png 。而火狐則很標准: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;
	}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved