MIME 类型“image/jpg”是不是与“image/jpeg”相同?
Posted
技术标签:
【中文标题】MIME 类型“image/jpg”是不是与“image/jpeg”相同?【英文标题】:Is the MIME type 'image/jpg' the same as 'image/jpeg'?MIME 类型“image/jpg”是否与“image/jpeg”相同? 【发布时间】:2016-02-15 00:57:46 【问题描述】:很简单的问题,但似乎无法在网上的任何地方找到。我正在尝试制作一个根据文件类型为我提供扩展名的程序。
【问题讨论】:
AFAIK 只有类型“image/jpeg”freeformatter.com/mime-types-list.html#mime-types-list ***.com/questions/23424399/jpg-vs-jpeg-image-formats 那一定是深夜混乱。我将尝试使用“image/jpeg”。 试试这个阅读:keycdn.com/support/difference-between-jpg-and-jpeg 【参考方案1】:不,image/jpg
与 image/jpeg
不同。
您应该使用image/jpeg
。只有image/jpeg
被识别为JPEG 文件的实际mime 类型。
见https://www.rfc-editor.org/rfc/rfc3745、https://www.w3.org/Graphics/JPEG/。
向 IE 提供不正确的 image/jpg
Content-Type 可能会导致问题,请参阅 http://www.bennadel.com/blog/2609-internet-explorer-aborts-images-with-the-wrong-mime-type.htm。
【讨论】:
由此引起的主要问题是 Safari 将在预览中而不是在浏览器窗口中打开一个图像链接,因为它认为这是一个未知的图像类型(从技术上讲,它是)。 如果您使用 WkWebview 开发 ios 应用程序,如果您使用 image/jpg 作为 MIME 类型,则图像将在 iOS 15 上显示为文本。使用 image/jpeg 可以解决问题。【参考方案2】:tl;dr “标准”是大杂烩;这取决于你问谁!
总的来说,似乎没有 MIME 类型 image/jpg
。然而,在实践中,几乎所有软件都可以处理名为“*.jpg
”的图像文件。
这个特定主题令人困惑,因为与 MIME 类型关联的文件扩展名的不同关联取决于哪个组织创建了 MIME 类型的文件扩展名表。换句话说,文件扩展名.jpg
可以是很多不同的东西。
例如,这里有三个“完整列表”和一个 RFC,它们具有不同的 JPEG 图像格式 文件扩展名和相关的 MIME 类型。
sitepoint.com mime-types-complete-list (archived).jfif
, .jfif-tbnl
, .jpe
, .jpeg
, .jpg
→ image/jpeg
.jfif
, .jpe
, .jpeg
, .jpg
→ image/pjpeg
freeformatter.com mime-types (archived)
.jpeg
, .jpg
→ image/jpeg
.jpeg
, .jpg
→ image/x-citrix-jpeg
.pjpeg
→ image/pjpeg
IANA "Media Types" (formerly known as MIME types) 列表 (archived)
(本文档列出了“names”,而不是“文件扩展名”)
jpg
未提及
jpeg
→ 参见 RFC 2045(未提及),参见 RFC 2046 → image/jpeg
13
JPEG
→ video/JPEG
jpeg2000
→ video/jpeg2000
jpm
→ image/jpm
(JPEG 2000)
jpx
→ image/jpx
(JPEG 2000)
vnd.sealedmedia.softseal.jpg
→ image/vnd.sealedmedia.softseal.jpg
RFC 3745 MIME Type Registrations for JPEG 2000 (ISO/IEC 15444)
.jpg
未提及文件扩展名
.jpeg
未提及文件扩展名
.jp2
, .jpg2
→ image/jp2
(JPEG 2000)9
.jpf
, .jpx
→ image/jpx
(JPEG 2000 ISO-JPEG2000-2 编码图像数据)10
.mj2
, .mjp2
→ video/mj2
(Motion JPEG 2000)11
.jpm
、.jpgm
→ image/jpm
(JPEG 2000 配置文件和
扩展)12
这些“完整列表”和 RFC 没有 MIME 类型 image/jpg
!但是对于 MIME 类型 image/jpeg
,某些列表确实具有不同的文件扩展名(.jpeg
、.jpg
、...)。其他列表未提及image/jpeg
。
此外,还有不同类型的 JPEG 图像格式(例如 渐进式 JPEG 图像格式、JPEG 2000 等)和“JPEG扩展名”在文件扩展名和声明的 MIME 类型中可能重叠也可能不重叠。
另一个令人困惑的事情是 RFC 3745 似乎与 IANA 媒体类型 不匹配,但相同的 RFC 应该通知 IANA 媒体类型文档。例如,在 RFC 3745 中,.jpf
是 image/jpx
的首选文件扩展名,但在 IANA 媒体类型 中,名称 jpf
不存在(并且该 IANA 文档引用RFC 3745!)。
另一个令人困惑的事情是IANA 媒体类型 列出了“名称”,但没有列出“文件扩展名”。这是故意的,但会混淆将文件扩展名映射到 MIME 类型的工作。
另一个令人困惑的事情:是“mime”,还是“MIME”,还是“MIME type”,还是“哑剧类型”,或“哑剧/类型”,或“媒体类型”⁉ ?
IANA 最官方的看似文件令人惊讶地不够充分。没有为文件扩展名 .jpg
注册 MIME 类型,但存在奇怪的 vnd.sealedmedia.softseal.jpg
。文件扩展名.JPEG
仅称为video
类型,而文件扩展名.jpeg
是图像类型(小写和大写字母什么时候开始重要!?)。同时,jpeg2000
是 video
类型,但 RFC 3745 认为 JPEG 2000 是 image
类型! IANA 列表似乎适合公司特定的 jpeg 格式(例如 vnd.sealedmedia.softseal.jpg
)。
总结...
由于之前的混淆,很难找到行业认可的将文件扩展名映射到 MIME 类型的规范文档,特别是对于 JPEG 图像文件格式。
相关问题“List of ALL MimeTypes on the Planet, mapped to File Extensions?”。
【讨论】:
通常只有一个来源描述了相关标准,而不是 4 个(!)。 RFC 是一个很好的切入点!【参考方案3】:对于那些可能有帮助的人,我使用this list 作为参考来定义我的内容类型,当我必须处理我的应用程序上的图像时。
上面说jpg扩展名可以用Content-type : image/jpeg
声明
内容类型没有任何image/jpg
属性。
【讨论】:
【参考方案4】:这里要注意的重要一点是,mime 类型不与文件扩展名相同。但是,有时它们具有相同的值。
https://www.iana.org/assignments/media-types/media-types.xhtml 包含一个已注册的 Mime 类型列表,但没有什么能阻止您自己编造,只要您同时处于发送端和接收端。这就是微软发挥作用的地方。
有很多混淆之处在于,操作系统有自己的方式来识别文件类型,即使用文件名的尾部(称为扩展名)来识别文件类型。在现代操作系统中,整个名称是一个长字符串,但在更原始的操作系统中,它被视为一个单独的属性。
造成混乱的操作系统是 MSDOS,它把扩展名限制为 3 个字符。直到今天,SD 卡等设备仍以同样的方式存储数据。
此限制的一个副作用是某些文件扩展名(例如 .gif
)与它们的 Mime 类型(image/gif
)匹配,而其他文件扩展名则会受到影响。这包括image/jpeg
,其扩展名缩短为.jpg
。即使在解除限制的现代 Windows 中,微软也从未放过过去,因此文件扩展名仍然是缩短版本。
鉴于:
-
文件扩展名不是文件类型
从历史上看,某些操作系统存在严重的文件名限制
有些操作系统会继续制定自己的规则
简短的回答是:
技术上没有image/jpg
这样的东西,所以答案是
和image/jpeg
不一样
这不会阻止一些操作系统和软件处理
好像是一样的
当我们在做的时候……
旧版本的 Internet Explorer 擅自上传具有 image/pjpeg
的 Mime 类型的 jpeg
文件,这当然意味着其他人需要做更多的工作。他们还将png
文件上传为image/x-png
。
【讨论】:
以上是关于MIME 类型“image/jpg”是不是与“image/jpeg”相同?的主要内容,如果未能解决你的问题,请参考以下文章