我在哪里可以找到特定文件格式/扩展名的内容类型? 例如,我知道mp3可以是以下内容类型之一:
'application/mp3', 'application/x-mp3', 'audio/mpeg', 'audio/mp3'
zip文件的内容类型是什么?我在哪里可以找到其他内容类型的信息?
我需要这个用于使用ruby on rail的paperclip插件进行验证。
谢谢!
更新:我刚刚找到this并认为它可能对其他人有用
答案 0 :(得分:4)
我知道mp3可以是以下内容类型之一
只有audio/mpeg
有效。其余的都是虚假的,通常不会在任何地方工作。
zip文件的内容类型是什么?
application/zip
。
我会在哪里找到其他内容类型的信息?
所有已注册媒体类型的正确列表为at IANA。当然,还有更多类型尚未注册,主要是那些带有x
前缀的类型。
如果您想要了解机器认为特定扩展使用服务器端脚本的动态,您可以在特定于操作系统的位置找到它。在Windows上,文件扩展名/类型信息存储在注册表中。在桌面Linux上,它位于/usr/share/mime
。在Apache Web服务器上,您可能希望重用Apache的mime.types
表。
是否为特定的文件格式/扩展名?
文件扩展名是非标准化的,并不是检查Web上资源类型的可靠方法,包括文件上载。文件扩展到媒体类型映射是特定于操作系统/安装的问题,因此您无法知道文件来自另一台计算机上的扩展名的媒体类型。此外,某些操作系统甚至不使用文件扩展名来确定类型(或仅将它们用作后备)。
即使查看文件上传提供的Content-Type
也没有多大用处,因为由于客户端设置不当,它经常出错。我想这就是为什么像application/mp3
这样的虚假类型已经悄悄进入上面的列表,因为有时候一台浏览器设置错误的某个浏览器发送了错误的类型。但浏览器总是可以发送任何旧的错误类型...你很可能会获得text/plain
MP3。
如果您需要允许用户为上传的资源设置明确的内容类型,则必须让他们手动选择它。当然,您可以使用一些脚本黑客来进行有用的猜测,例如“如果它以.jpeg结尾,它可能可能一个JPEG”并自动进行选择。但在一般情况下,从用户提交的文件扩展名中猜测类型是不可靠的。