在coldfusion中检测到一个文件mimetype';s已上载到服务器上
我正在尝试检测Web服务器上文件库的文件类型,因为我们正在实现旨在将文件安全地流式传输到浏览器的代码。以前,文件是通过直接href存储并呈现给用户的 我尝试了3种不同的方法,都是在我的本地机器上完成的(这不是模拟的生产环境):在coldfusion中检测到一个文件mimetype';s已上载到服务器上,coldfusion,mime,mime-types,Coldfusion,Mime,Mime Types,我正在尝试检测Web服务器上文件库的文件类型,因为我们正在实现旨在将文件安全地流式传输到浏览器的代码。以前,文件是通过直接href存储并呈现给用户的 我尝试了3种不同的方法,都是在我的本地机器上完成的(这不是模拟的生产环境): 将变量设置为从函数getPageContext().getServletContext().GetMimetType()返回的值。这会检测文件的某些但不是所有mime类型 从coldfusion.util.MimeTypeUtils创建对象并调用函数guessMimeTy
编辑:这是在CF8环境下进行的。不会有100%保证可靠的方式,因为mime类型是任意映射 您将需要使用某人的映射,无论是操作系统还是JVM 您有责任填补操作系统或JVM在映射中的任何空白,并使其保持最新
但是,我始终能够创建一些文件,将其扩展名设为.xyzy,而您将无法找到它的“mime类型”。我知道这是一个非常古老的问题,但提供的答案来自CF9和更早的时代。为了澄清那些使用CF10及以上的人,现在有一个
请注意,它不仅查看文件扩展名,而且在默认情况下还评估一些内容,以确保内容与可能暗示的文件扩展名和mime类型匹配。请参阅函数中的“strict”参数。IIRC,cffile upload上的mime类型是客户端浏览器报告的mime类型,可能准确,也可能不准确。它总是存在的,因为浏览器需要发送一些东西,即使它本质上是一个占位符。@Ben,我也是这么想的。谷歌搜索显示的结果与上述解释一致。如果我能在这里找到答案,我可以在后端设置一个函数来检查上传文件的mime类型,这样我们就不必在以后从用户上传的文件中删除不一致或不正确的mime类型的数据。这似乎只对了一半。我怀疑mime类型没有存储在文件中,但任意赋值听起来也不正确。当然,您可以创建自己的随机文件扩展名,但是如果您想以编程方式使用它,除了在操作系统的mime类型db/列表中设置扩展名和mime类型之外,还必须有一种方法将您的文件类型与应用程序相关联。也许“任意”是错误的词。我的意思是说它不是程序化的。您无法查看以前从未见过的文件并确定正确的mime类型。mime类型的规范注册在此处:。确定mime类型的方法通常是根据注册类型的数据库查找文件扩展名或幻数()。看到它是如何的外部元数据,我看到如何不可能一直获取它们。我可以手动输入少量mime类型,并且我可以实现验证,以仅接受当前可检测的mime类型,或者在未知的MS Office文件的情况下,如果浏览器不能,只需通过编程指定正确的mime类型。谢谢你的帮助。