【问题标题】:Is the MIME type 'image/jpg' the same as 'image/jpeg'?MIME 类型“image/jpg”是否与“image/jpeg”相同?
【发布时间】:2016-02-15 00:57:46
【问题描述】:

很简单的问题,但似乎无法在网上的任何地方找到。我正在尝试制作一个根据文件类型为我提供扩展名的程序。

【问题讨论】:

标签: file mime-types


【解决方案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 类型。

这些“完整列表”和 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 中,微软也从未放过过去,因此文件扩展名仍然是缩短版本。

    鉴于:

    1. 文件扩展名不是文件类型
    2. 从历史上看,某些操作系统存在严重的文件名限制
    3. 有些操作系统会继续制定自己的规则

    简短的回答是:

    • 技术上没有image/jpg这样的东西,所以答案是 和image/jpeg不一样
    • 这不会阻止一些操作系统和软件处理 好像是一样的

    当我们在做的时候……

    旧版本的 Internet Explorer 擅自上传具有 image/pjpeg 的 Mime 类型的 jpeg 文件,这当然意味着其他人需要做更多的工作。他们还将png文件上传为image/x-png。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-12
      • 2012-12-08
      • 2014-10-01
      • 2011-09-17
      • 1970-01-01
      • 2014-08-19
      • 1970-01-01
      相关资源
      最近更新 更多