![](/img/trans.png)
[英]What is the best way to upload a file via an HTTP POST with a web form?
[英]What is the best way to determine the mime type of an http file upload?
假设您有一个HTML表单,其输入标签的类型为“文件”。 将文件发布到服务器后,它将与相关元数据一起存储在本地。
我可以想到三种确定MIME类型的方法:
这些解决方案都不是完美的。
哪个是最准确的解决方案?
还有其他更好的选择吗?
如果您使用的是PHP,则可以使用
http://pecl.php.net/package/Fileinfo
它将检查文件的许多方面。 对于Python,您可以使用
http://pypi.python.org/pypi/python-magic/0.1
在Linux / Unix和Windows上,libmagic的绑定是什么? 系统。 看到:
man magic
man libmagic
在Linux上。 它使用幻数测试来尝试并确定文件的mime类型。
我喜欢魔术数字方法,因为如果您在上传的Web服务器上处理文件,它可能会捕获错误的扩展名和很多技巧。 这些测试通常是一次性的,因此通过文件读取对性能的影响可以忽略不计。
我认为您不能依靠其中任何一个作为确定的“我是哑剧类型x”。 前两个的问题是,由于客户端(浏览器或其他)的问题或来自各个客户端的误导性请求(各种黑客尝试等),提供的内容类型可能不正确。
因此,您可能应该尝试合并每种类型的信息,并得出某种置信度。 如果文件扩展名为.doc,且MIME类型为application / msword,则很有可能是word文档,但可以通过MIME类型检测实用程序运行它以确保。
应该有一种使用您使用的语言进行mime魔术检测的解决方案-尽管您没有提到哪一种。 它们通常都通过查看文件的前几个字节/字符来工作,并将它们与mime类型的查找表进行匹配。 有些人还从文件中删除了BOM,以帮助解决这个问题。 如果无法检测到哑剧类型,它们通常会退回到纯文本格式。
如果您想要一种独立于平台的方法,那么请看一下存在的各种Java库:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.