我有一个应用程序,我允许用户上传支持文档。我正在使用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?
答案 0 :(得分:2)
我怀疑客户端的浏览器尚未配置为.xls文件选择正确的mime类型。最有可能的是,mime类型的application / octet-stream是在请求中的HTTP头中发送的。
答案 1 :(得分:0)
忘记accept
属性,因为CF(9及以下)只检查文件扩展名,即使客户端浏览器发送了正确的MIME类型。
上传文件,然后根据白名单检查文件扩展名。
如果没有accept
,您甚至不会得到该例外。
答案 2 :(得分:-1)
哦,哦...我讨厌不同意Sun Flower,但这里的问题是服务器上的扩展名映射而不是客户端。该文件到达服务器,ColdFusion根据扩展名“查找”mime类型。从未在您的服务器上安装过Excel,很可能没有关联的mime类型。请记住取决于客户端的任何内容将在这里帮助您。文件到达时,它有一个扩展名,扩展名必须与服务器知道的内容匹配。
如果这是windows,你可以将mime类型添加到IIS(只需搜索“mime类型 - IIS6或IIS7获取指示”)和我相信它会自动添加相关的mime类型到底层注册表配置单元。否则它是一个注册表黑客。我将从内存中走出来,我太累了,不能查找它:)
抱歉 - 错过了有关application / octet-stream的问题。这是任意文件的默认mime类型。一种全能的。