在IE上传JPG图片的问题
程序员文章站
2022-04-29 16:02:19
...
前一段时间做了一个图片上传的小程序,今天有人说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; }
上一篇: php让图片弹出下载框的方法
推荐阅读
-
HTML5在IE10、火狐下中文乱码问题的解决方法
-
在IE浏览器中快速保存网页中的图片(拖动方式)
-
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
-
最近上传图片上传文件报413错误及仅Https下报413问题,IIS高版本的配置方案及Web.config配置全解
-
快速解决Vue项目在IE浏览器中显示空白的问题
-
快速解决vue-cli在ie9+中无效的问题
-
解决betterScroll在vue中存在图片时,出现拉不动的问题
-
javascript实现的图片预览和上传功能示例【兼容IE 9】
-
Jquery $.getJSON 在IE下的缓存问题解决方法
-
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题