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

注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

JPG图片上传在IE下的问题相关推荐

  1. jeesite4中图片上传功能

    图片上传 一般情况下的图片上传 1.添加图片上传标签 2.修改service中的save方法 将图片保存到实体属性中 1.修改图片上传标签,修改后的如下 效果 将图片保存到对象的拓展表中 1.代码如下 ...

  2. 配置typora图片上传服务器

    配置typora图片上传服务器 windows下 第一种方案 简单配置(纯图形操作,如果有代码基础推荐直接看第二种) 下载最新版本的typora,安装好后,在左侧打开设置 设置里打开图像,选择上传图片 ...

  3. vue中图片上传及回显

    在vue中图片上传到服务器下指定路径,并实现根据图片路径调取后台接口返回图片流在vue页面展示图片 一.图片上传 1.前台上传 <template slot-scope="scope& ...

  4. 【报错笔记】在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录。

    在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录. 我使用UUID生成8级目录,在webapp下创建目录,将图片传进 ...

  5. java下传图片到tomcat服务器后,如何在页面显示,java图片上传服务器及客户端显示图片...

    我在上一篇文章SSM+Layui实现文件上传服务器中展示了如何将图片上传至服务器,保存到SQL server数据库中,本篇文章主要讲的是将图片上传到服务器上,保存在服务器的磁盘上,然后将图片路径保存到 ...

  6. Ubuntu 下配置 Typora 图片上传到 smms

    Ubuntu 下配置 Typora 图片上传到 smms 首先在这里安装 PicGo,在Typora中的:File / Preferences / Image部分,找到Download and Upg ...

  7. thinkphp下的图片上传

    关于图片上传,实现方法很多,比如可以用jQuery,当然,我们的thinkPHP内置了关于图片上传的功能,我们可以直接使用,使用方法如下: 首先,是表单书写,我们建立如下表单: [html] view ...

  8. 图片上传预览的几种方式,了解下?

    图片上传预览场景基本处处可见,朋友圈发动态配图,身份验证及头像更新,莫过如斯. 原由 最近在研究twitter PC网站的时候,在个人中心的主页,设置个人的背景图的时候,发现twitter有个非常好的 ...

  9. js将图片上传服务器文件夹下,Egg.js 实现向服务器上传图片

    1.安装时间处理 及 压缩 模块 yarn add silly-datetime pump 2.文件保存路径 config/config.default.js config.uploadDir = ' ...

最新文章

  1. ASP.NET文件的下载
  2. point-to-point(点对点) 网口
  3. 第十六届智能车竞赛赛前补充比赛信息
  4. linux 多线程端口扫描,python 多线程完成linux服务器端口扫描
  5. BV-Person: A Large-scale Dataset for Bird-view Person Re-identification
  6. 为何终端防护对ICS如此重要
  7. 洛谷 1969 积木大赛——水题
  8. boost::range模块实现map_keys相关的测试程序
  9. ITK:创建样本测量列表
  10. STM32基于AD5663的UV灯电压控制
  11. MyBatis-Plus_LambdaQueryWrapper
  12. php分享十三:mysql事物
  13. datatable java排序,Java实现DataTable的过滤,排序,聚合功能
  14. React 使用图片验证码组件(登录验证)
  15. qfileinfolist 取中间_公司起名:网络公司名字起名寓意如何取寓意成功的网络公司名字...
  16. 使用pyqt开发gui(pyqt集成到pycharm)
  17. 空间回归分析笔记3——OLS、GWR输出结果的意义
  18. BAT批处理自动安装软件
  19. 笔记本电池续航测试软件,电池续航测试和试用总结
  20. 半导体物理学——(一)半导体中的电子状态

热门文章

  1. 【解决】Initializing libiomp5md.dll, but found libiomp5md.dll already initialized. matplotlib.pylot 画图报错
  2. 新窗口打开超链接的技巧
  3. 计算机版初中地理知识点总结,初中地理教学工作总结(精选5篇)
  4. 测试入门——翻页功能测试用例
  5. Z80 CPU中的主要指令
  6. 笛卡尔积 php,PHP笛卡尔积实现算法示例
  7. 【Python】二维码生成与读取
  8. 计算机速录教程,亚伟中文速录机培训教程-第二讲课件
  9. 钉钉轻应用PC免登5步曲
  10. PIC16F887 单片机 proteus SHT11