为什么ColdFusion Server误解了上传文件的MIME类型?

时间:2012-07-05 23:47:37

标签: coldfusion mime-types

我有一个应用程序,我允许用户上传支持文档。我正在使用cffile标签来保存文件。

标签如下所示:

<cffile action="upload" 
        destination="path..."
        nameconflict="makeunique"
        ACCEPT="application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/pdf, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        filefield="outline">

上传了.xls文件,并生成错误,指出上传的文件“application / octet-stream”未被接受。

问题是为什么服务器将.xls电子表格文件解释为具有“application / octet-stream”mime-type?

3 个答案:

答案 0 :(得分:2)

我怀疑客户端的浏览器尚未配置为.xls文件选择正确的mime类型。最有可能的是,mime类型的application / octet-stream是在请求中的HTTP头中发送的。

答案 1 :(得分:0)

忘记accept属性,因为CF(9及以下)只检查文件扩展名,即使客户端浏览器发送了正确的MIME类型。

上传文件,然后根据白名单检查文件扩展名。

如果没有accept,您甚至不会得到该例外。

答案 2 :(得分:-1)

我不认为下面的答案是正确的,但我将其留在这里以帮助完成讨论。请参阅下面的评论。 -MK

哦,哦...我讨厌不同意Sun Flower,但这里的问题是服务器上的扩展名映射而不是客户端。该文件到达服务器,ColdFusion根据扩展名“查找”mime类型。从未在您的服务器上安装过Excel,很可能没有关联的mime类型。请记住取决于客户端的任何内容将在这里帮助您。文件到达时,它有一个扩展名,扩展名必须与服务器知道的内容匹配。

如果这是windows,你可以将mime类型添加到IIS(只需搜索“mime类型 - IIS6或IIS7获取指示”)和我相信它会自动添加相关的mime类型到底层注册表配置单元。否则它是一个注册表黑客。我将从内存中走出来,我太累了,不能查找它:)


抱歉 - 错过了有关application / octet-stream的问题。这是任意文件的默认mime类型。一种全能的。