非常简单的问题,但似乎无法在网上找到它。我正在尝试创建一个程序,根据文件类型将给我扩展名。
答案 0 :(得分:355)
不,image/jpg
与image/jpeg
不同,只有image/jpeg
被识别为JPEG文件的实际mime类型。
请参阅https://tools.ietf.org/html/rfc3745,https://www.w3.org/Graphics/JPEG/。
向IE提供错误的内容类型image/jpg
会导致问题,请参阅http://www.bennadel.com/blog/2609-internet-explorer-aborts-images-with-the-wrong-mime-type.htm。
答案 1 :(得分:5)
对于那些可能有用的方法,当我必须处理应用程序上的图像时,我使用this list作为定义内容类型的参考。
它表示可以使用python is /usr/local/bin/python
System is Running Required Python version :2.7
Python to be used : /usr/local/bin/python
pip is /usr/bin/pip
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/bs4/__init__.py", line 30, in <module>
from .builder import builder_registry, ParserRejectedMarkup
File "/usr/lib/python2.7/site-packages/bs4/builder/__init__.py", line 317, in <module>
from . import _lxml
File "/usr/lib/python2.7/site-packages/bs4/builder/_lxml.py", line 9, in <module>
from lxml import etree
File "lxml.etree.pyx", line 134, in init lxml.etree (src/lxml/lxml.etree.c:187500)
TypeError: encode() argument 1 must be string without null bytes, not unicode
bs4 is not installed. Installing latest available version...
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/bs4/__init__.py", line 30, in <module>
from .builder import builder_registry, ParserRejectedMarkup
File "/usr/lib/python2.7/site-packages/bs4/builder/__init__.py", line 317, in <module>
from . import _lxml
File "/usr/lib/python2.7/site-packages/bs4/builder/_lxml.py", line 9, in <module>
from lxml import etree
File "lxml.etree.pyx", line 134, in init lxml.etree (src/lxml/lxml.etree.c:187500)
TypeError: encode() argument 1 must be string without null bytes, no
内容类型没有任何Content-type : image/jpeg
属性。
答案 2 :(得分:2)
tl; dr 这取决于您询问的人
总体而言,似乎没有MIME类型image/jpg
。但是,实际上,几乎所有软件都可以处理名为“ *.jpg
”的图像文件。这个特定的主题令人困惑,因为与MIME类型相关联的文件扩展名的变化关联(例如,文件扩展名.jpg
)取决于哪个组织为MIME类型创建了文件扩展名表。
例如,这里有3个“完整列表”,它们围绕各种 JPEG图像格式文件扩展名和相关的MIME类型而大不相同。
.jfif
,.jfif-tbnl
,.jpe
,.jpeg
,.jpg
→image/jpeg
.jfif
,.jpe
,.jpeg
,.jpg
→image/pjpeg
.jpeg
,.jpg
→image/jpeg
.jpeg
,.jpg
→image/x-citrix-jpeg
.pjpeg
→image/pjpeg
.jpeg
→(什么都没有).JPEG
→video/JPEG
.jpm
→image/jpm
(指JPEG 2000).jpx
→image/jpx
(指JPEG 2000)vnd.sealedmedia.softseal.jpg
→image/vnd.sealedmedia.softseal.jpg
??? 这些“完整列表”没有MIME类型image/jpg
!但是对于MIME类型image/jpeg
这些名单确实具有不同的文件扩展名(.jpeg
,.jpg
,...)。此外,有不同类型的 JPEG图像格式 S(例如,渐进式JPEG图像格式, JPEG 2000 ,等等),其可以或可以不重叠在文件扩展名和声明的MIME类型中。这增加了整体混乱。 (另一种令人困惑的事情;是 “默”,或 “ MIME ”,或 “ MIME类型”,或“ mime类型”或“ mime / type ”⁉)
似乎任何人(或公司)都可以组成他们经常使用的文件扩展名和MIME类型。最官方表面上的由IANA文档是令人惊讶的不足(没有被注册为图像类型.jpeg
,.JPEG
仅称为视频类型)并且似乎迎合公司 - 特定的jpeg格式(例如vnd.sealedmedia.softseal.jpg
)。
相关问题“ List of ALL MimeTypes on the Planet, mapped to File Extensions?”。
答案 3 :(得分:0)
这里要注意的重要一点是,MIME类型与文件扩展名不同。但是,有时它们具有相同的值。
https://www.iana.org/assignments/media-types/media-types.xhtml包含已注册的Mime类型的列表,但是只要您在发送端和接收端,都不会阻止您自己编写自己的Mime。微软正是来这里的。
存在很多混乱的地方是,操作系统具有自己的方式,即通过使用文件名的尾部(称为扩展名)来识别文件类型。在现代操作系统中,全名是一个长字符串,但是在更原始的操作系统中,它被视为单独的属性。
引起混乱的操作系统是MSDOS,它已将扩展名限制为3个字符。直到今天,这种限制已在仍以相同方式存储数据的设备(例如SD卡)中继承。
此限制的一个副作用是,某些文件扩展名(例如.gif
与它们的Mime类型image/gif
匹配,而其他文件扩展名却遭到了破坏。这包括扩展名缩短为image/jpeg
的{{1}}。即使在解除限制的现代Windows中,Microsoft也永远不会过去,因此文件扩展名仍然是缩短的版本。
鉴于此:
简短的答案是:
.jpg
这样的东西,所以答案是
与image/jpg