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/jpgimage/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, .jpgimage/jpeg .jfif, .jpe, .jpeg, .jpgimage/pjpeg freeformatter.com mime-types (archived) .jpeg, .jpgimage/jpeg .jpeg, .jpgimage/x-citrix-jpeg .pjpegimage/pjpeg IANA "Media Types" (formerly known as MIME types) 列表 (archived) (本文档列出了“names”,而不是“文件扩展名”) jpg 未提及 jpeg → 参见 RFC 2045(未提及),参见 RFC 2046image/jpeg13 JPEGvideo/JPEG jpeg2000video/jpeg2000 jpmimage/jpm (JPEG 2000) jpximage/jpx (JPEG 2000) vnd.sealedmedia.softseal.jpgimage/vnd.sealedmedia.softseal.jpg RFC 3745 MIME Type Registrations for JPEG 2000 (ISO/IEC 15444) .jpg 未提及文件扩展名 .jpeg 未提及文件扩展名 .jp2, .jpg2image/jp2 (JPEG 2000)9 .jpf, .jpximage/jpxJPEG 2000 ISO-JPEG2000-2 编码图像数据10 .mj2, .mjp2video/mj2 (Motion JPEG 2000)11 .jpm.jpgmimage/jpmJPEG 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 中,.jpfimage/jpx 的首选文件扩展名,但在 IANA 媒体类型 中,名称 jpf 不存在(并且该 IANA 文档引用RFC 3745!)。

另一个令人困惑的事情是IANA 媒体类型 列出了“名称”,但没有列出“文件扩展名”。这是故意的,但会混淆将文件扩展名映射到 MIME 类型的工作。

另一个令人困惑的事情:是“mime”,还是“MIME”,还是“MIME type”,还是“哑剧类型”,或“哑剧/类型”,或“媒体类型”⁉ ?

IANA 最官方的看似文件令人惊讶地不够充分。没有为文件扩展名 .jpg 注册 MIME 类型,但存在奇怪的 vnd.sealedmedia.softseal.jpg。文件扩展名.JPEG 仅称为video 类型,而文件扩展名.jpeg 是图像类型(小写和大写字母什么时候开始重要!?)。同时,jpeg2000video 类型,但 RFC 3745 认为 JPEG 2000image 类型! 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”相同?的主要内容,如果未能解决你的问题,请参考以下文章

Is the MIME type 'image/jpg' the same as 'image/jpeg'?

9.27

浏览器的小图标

关于网页的一些内容

检查文件 mime 类型是不是与 php 中的扩展名匹配

getFiles() 与 relayjs 突变反应本机