为什么IE7指定mime类型为image/pjpeg而不是image/jpeg?

54

当通过IE7上传一个jpeg文件时,我看到的mime类型是“image/pjpeg”,而不是像在Firefox或其他浏览器中看到的“image/jpeg”。虽然很容易解决这个问题,但我想知道为什么IE7在这种情况下的行为与其他浏览器不同?


1
我有访客上传图片并测试其是否为可接受的类型,当然pjpeg不在我的allowed_format_list中,这真是一个麻烦,很难识别出这个问题。我在IE 7和8上看到了它。 - adrianTNT
4个回答

36

我认为这是因为你所使用的JPEG是一种渐进式JPEG,它有不同的MIME类型。


4
我认为只有image/jpeg和image/pjpeg(用于JPEG格式)。 我甚至不确定使用“image/pjpeg”作为MIME类型是否标准,但这又能阻止谁呢? :) - Pseudo Masochist
IE7为什么要做出这种区别,而FF等浏览器却没有呢? - John Montgomery
11
显然,IE团队认为这与常规情况不同,需要使用单独的MIME类型标识。但他们可能错了:http://groups.google.com/group/comp.infosystems.www.authoring.images/msg/7706603e4bd1d9d4?hl=en - Pseudo Masochist
3
啊,所以(从历史上看)image/jpeg 作为一种 MIME 类型在渐进式 JPEG 本身之前存在,因此并非所有声称能够接受 image/jpeg 的浏览器都能处理渐进式 JPEG。 - John Montgomery

27

即使不是渐进式的,IE也可以将所有 .jpeg 文件以其黑客 MIME 类型'image/pjpeg'上传。

不要仅依赖文件上传中提供的MIME类型,因为有很大可能出现错误,包括此类情况。


另一个关于同样问题的stackoverflow.com问答: https://dev59.com/5HVC5IYBdhLWcg3wtzut - Jacco
谢谢,这让我头疼了。 - edosoft

24

上面的链接是正确的,但稍微更改了一下以引用段落:http://www.iana.org/assignments/media-types/media-types.xhtml#image - sebilasse

16

关于png格式也有同样的问题:

IE7:image/x-png 其他浏览器:image/png

;)


5
有些微不同:x-前缀作为未注册MIME类型的命名空间是标准化的,因此这并不违反标准。但仍然应该使用image/png。 - Stewart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接