为什么 Urlmon.dll 中的 FindMimeFromData 函数为许多文件类型返回 MIME 类型“application/octet-stream”?

2023-11-26

为什么 Urlmon.dll 中的 FindMimeFromData 函数对许多文件类型返回 MIME 类型“application/octet-stream”,而按文件扩展名检查 MIME 类型(即针对 Windows 注册表)会返回更精确的类型?

例如,mp3 是“application/octet-stream”而不是“audio/mp3”。

基本上,我想验证扩展名不正确的上传文件。此方法似乎适用于许多图像文件、xml 等。

问题类似于this one,但提供的解决方案不适合验证上传的文件,因为返回的 MIME 类型不同/不明确。


阅读文档从数据中查找 Mime带我去Internet Explorer 中的 MIME 类型检测。根据该信息很难找到26 种不同的 MIME 类型,这在当今世界是相当小的。 “音频/mp3”不是其中之一。

从数据中查找 Mime包含针对(当前 26 个)单独 MIME 类型的硬编码测试(请参阅已知的 MIME 类型)。这意味着,如果给定缓冲区包含这些 MIME 类型之一格式的数据,则 FindMimeFromData 中存在一个测试,该测试旨在(通过扫描缓冲区内容)来识别相应的 MIME 类型。如果 MIME 类型是这 N 个 MIME 类型之一,则该 MIME 类型是已知的。如果 MIME 类型是“text/plain”、“application/octet-stream”、空字符串或 null(即服务器无法提供它),则该类型是不明确的。

不幸的是,它看起来像FindMimeFromData对于确定现代 MIME 类型不是很有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Urlmon.dll 中的 FindMimeFromData 函数为许多文件类型返回 MIME 类型“application/octet-stream”? 的相关文章

随机推荐