在两个不同的服务器(dev / prod)上运行相同的应用程序。据我所知,服务器运行相同版本的所有内容(CF,Java,IIS等)。
在开发时,我上传了一个特定的Word文档,ColdFusion将其标识为application/msword
,并将其标识为application/x-tika-msoffice
。
我试图诊断原因。我的修复是在我的上传中允许application/x-tika-msoffice
mime类型,但仍然是什么导致它不同。如果有一些特定的服务器设置我需要检查请告诉我,但我能想到的一切似乎在prod和dev之间。
答案 0 :(得分:2)
浏览器发送的 MIME类型,这可能解释了您所看到的差异。也许在开发过程中,您已经安装了Office,而在生产服务器上,您希望不会。
您不应该使用MIME类型来确定是否应该上传文件 - 而是始终使用文件扩展名。这种mime类型很容易被欺骗,因此无需依赖验证。
CF10 +允许您在accept
标记的cffile
属性中指定文件扩展名列表。它还添加了strict
属性并将其默认为true
,它执行服务器端MIME类型检查(与运行fileGetMimeType()
基本相同,但即使使用strict=true
,您仍然无法依赖在这个文件检查时,扩展更重要(两者兼而有之)。