zoukankan      html  css  js  c++  java
  • JPG图片上传在IE下的问题

    前一段时间做了一个图片上传的小程序,今天有人说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] => nowamagic.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;
        }

    注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。
  • 相关阅读:
    linux网络编程系列TCP及常用接口分析
    Linux网络编程系列TCP状态分析
    常见的HTTP 1.1状态代码及含义
    修改android SDK 模拟器(avd) 内存大小
    Android应用研发核心竞争力
    网路编程——阻塞式&&非阻塞式
    URI、URL和URN之间的区别与联系
    初识android——四大组件
    无依赖的combobox组件(autocomplete组件)
    为什么JS没有catchMyException或类似的方法
  • 原文地址:https://www.cnblogs.com/hakuci/p/2490408.html
Copyright © 2011-2022 走看看