很简单的问题,但似乎在网上的任何地方都找不到。我正在尝试制作一个根据文件类型为我提供扩展名的程序。
不,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。
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
.jfif、.jfif-tbnl、.jpe、.jpeg、.jpg → 图像/jpeg
.jfif、.jpe、.jpeg、.jpg → 图像/pjpeg
freeformatter.com mime 类型(存档).jpeg、.jpg → image/jpeg .jpeg、.jpg → image/x-citrix-jpeg .pjpeg → image/pjpeg
.jpeg、.jpg → 图像/jpeg
.jpeg, .jpg → 图像/x-citrix-jpeg
.pjpeg → 图像/pjpeg
IANA“媒体类型”(以前称为 MIME 类型)列表(存档)(本文档列出“名称”,而不是“文件扩展名”) jpg 未提及 jpeg → 参见 RFC 2045(未提及),参见 RFC 2046 → image/ jpeg13 JPEG → 视频/JPEG jpeg2000 → 视频/jpeg2000 jpm → 图像/jpm (JPEG 2000) jpx → 图像/jpx (JPEG 2000) vnd.sealedmedia.softseal.jpg → 图像/vnd.sealedmedia.softseal.jpg
未提及.jpg
jpeg → 参见 RFC 2045(未提及),参见 RFC 2046 → image/jpeg13
JPEG → 视频/JPEG
jpeg2000 → 视频/jpeg2000
jpm → 图像/jpm (JPEG 2000)
jpx → 图像/jpx (JPEG 2000)
vnd.sealedmedia.softseal.jpg → image/vnd.sealedmedia.softseal.jpg
RFC 3745 MIME 类型注册 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(运动 JPEG 2000)11 .jpm、.jpgm → image/jpm(JPEG 2000 配置文件和扩展名)12
.jpg 文件扩展名未提及
.jpeg 文件扩展名未提及
.jp2、.jpg2 → 图像/jp2 (JPEG 2000)9
.jpf、.jpx → image/jpx(JPEG 2000 ISO-JPEG2000-2 编码图像数据)10
.mj2、.mjp2 → 视频/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”,还是“mime type”,还是“mime/type”,还是“media 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?”。
对于那些可能会有所帮助的人,当我必须在我的应用程序上处理图像时,我使用 this list 作为定义我的内容类型的参考。
它说可以用 Content-type : image/jpeg
声明 jpg 扩展名
内容类型没有任何 image/jpg
属性。
这里要注意的重要一点是,mime 类型与文件扩展名不同。但是,有时它们具有相同的值。
https://www.iana.org/assignments/media-types/media-types.xhtml 包括已注册的 Mime 类型列表,但没有什么能阻止您自己编造,只要您同时处于发送端和接收端。这就是微软介入的地方。
有很多混淆的地方是,操作系统有自己的方式来识别文件类型,通过使用文件名的尾部,称为扩展名。在现代操作系统中,整个名称是一个长字符串,但在更原始的操作系统中,它被视为一个单独的属性。
造成混乱的操作系统是 MSDOS,它把扩展名限制为 3 个字符。这一限制在今天仍然以相同方式存储数据的设备(例如 SD 卡)中被继承。
此限制的一个副作用是某些文件扩展名(例如 .gif
)与它们的 Mime 类型 image/gif
匹配,而其他文件扩展名则受到损害。这包括扩展名为 .jpg
的 image/jpeg
。即使在解除限制的现代 Windows 中,微软也从未放过过去,因此文件扩展名仍然是缩短的版本。
鉴于:
文件扩展名不是文件类型从历史上看,一些操作系统有严重的文件名限制一些操作系统会继续前进并制定自己的规则
简短的回答是:
从技术上讲,没有 image/jpg 这样的东西,所以答案是它与 image/jpeg 不一样
这不会阻止某些操作系统和软件将其视为相同
当我们在它...
旧版本的 Internet Explorer 擅自上传具有 image/pjpeg
的 Mime 类型的 jpeg
文件,这当然意味着其他人需要做更多的工作。他们还将 png
个文件上传为 image/x-png
。