ColdFusion 10 CFFILE接受mimetype无法识别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ColdFusion 10 CFFILE接受mimetype无法识别相关的知识,希望对你有一定的参考价值。
我在上传WMV和MPEG文件时遇到问题,'video / x-ms-wmv'(等)在接受列表中 - 我得到一个错误
服务器不接受MIME类型或上载文件application / octet-stream的扩展名
使用Chrome,我检查标题然后读取
内容处理:表格数据; NAME = “fv_file”; filename =“blahblah.wmv”内容类型:video / x-ms-wmv
客户端计算机还具有WMV注册表项,该条目看起来正确。
服务器端Apache配置为使用OS mime类型文件:/etc/mime.types。此文件包含wmv和mpeg的条目:video / x-ms-wmv wmv video / mpeg mpeg
CF10如何确定mimetype?我很难找到这些信息。有没有人有办法解决吗?
谢谢
编辑 - 添加代码
<cffile action="UPLOAD" filefield="fv_file" destination="#pathtotheserverroot##mediadir#/video/" nameconflict="MAKEUNIQUE" accept="#qry_xxxx.OT_MIMETYPES#" mode="644">
OT_MIMETYPES的值是
视频/ MP4,视频/ MPEG,视频/ QuickTime的,视频/ X-msvideo,视频/ X-SGI-电影,视频/ AVI,视频/ vnd.vivo,应用/ vnd.rn-的RealMedia,视频/ vnd.rn-的RealVideo,音频/ vnd.rn-的RealAudio,音频/ X-PN-的RealAudio,视频/ X-MS-WMV,音频/ MPEG,视频/ MPG,视频/ MPE,视频/ X-MS-ASF,视频/ X- M4V
我完成了CFDUMP
Accept video/mp4,video/mpeg,video/quicktime,video/x-msvideo,video/x-sgi-movie,video/avi,video/vnd.vivo,application/vnd.rn-realmedia,video/vnd.rn-realvideo,audio/vnd.rn-realaudio,audio/x-pn-realaudio,video/x-ms-wmv,audio/mpeg,video/mpg,video/mpe,video/x-ms-asf,video/x-m4v
Detail Only files of type video/mp4,video/mpeg,video/quicktime,video/x-msvideo,video/x-sgi-movie,video/avi,video/vnd.vivo,application/vnd.rn-realmedia,video/vnd.rn-realvideo,audio/vnd.rn-realaudio,audio/x-pn-realaudio,video/x-ms-wmv,audio/mpeg,video/mpg,video/mpe,video/x-ms-asf,video/x-m4v can be uploaded. Verify that you are uploading a file of the appropriate type.
Message The MIME type or the Extension of the uploaded file application/octet-stream was not accepted by the server.
MimeType application/octet-stream
我将不得不推测,直到我能看到你的<cffile>
代码,但我的猜测是你没有在accept
标签的<cffile>
属性下允许适当的mime类型。
现在您已经包含了我的代码,我的假设已被确认:您没有在accept
标记的<cffile>
属性下允许适当的mime类型。
请参阅下文了解更多详情。
对<cffile>
标签在ColdFusion 10中的工作方式进行了一些更改。您可能也可能不知道在ColdFusion 10中他们将strict
属性添加到标签(documentation reference)。
- 当strict为true时,accept属性中只允许MIME类型或MIME类型和扩展名的组合。由于默认情况下strict为true,因此应为accept属性指定MIME类型。
- 如果strict为false,则可以将MIME类型或扩展名或两者的组合指定为accept属性的值。有关更多信息,请参阅this blog entry。
不仅添加了该属性,而且strict
属性的默认值是true
。因此,您尚未在代码中指定它,因此它已启用。
注意:如果您收到“服务器未接受上传文件的MIME类型(图像/ jpeg)”之类的错误,请输入accept =“image / jpeg”以接受JPEG文件。
Taken from the Adobe documentation here。从您发布的错误消息中,尝试上载mime类型为“application / octet-stream”的文件。您似乎期待“video / x-ms-wmv”。因此,您可以尝试找出浏览器尝试将文件上传为“application / octet-stream”的原因,或将该mime类型添加到accept
属性中。警告:这也将允许您上传您可能不想要的其他类型的文件。
cffile accept
属性使用浏览器发送到服务器的mime类型。再读一遍......你的浏览器告诉cffile
mime类型是什么。欺骗哑剧类型非常容易
取自Pete Freitag关于Tips for Secure File Uploads with ColdFusion的页面。 (较旧的文章,但仍有相关的提示。)
我发现的其他一些参考资料可能会有所帮助:
- Adobe forums - cffile MIME types
- Learn CF In A Week - File Uploads
- How is mime type of an uploaded file determined by browser?
- 回答Why am I getting mime-type of .csv file as “application/octet-stream”?
你可能有一些奇怪的哑剧类型。如果在标记周围使用try / catch块,则可以显示完整的错误消息。
例:
<cftry>
<cffile accept="video/x-ms-wmv" action="upload" destination="#ExpandPath('/client-images/')#" filefield="form.UploadFile" nameconflict="makeunique">
<cfcatch type="any">
<cfdump var="#cfcatch#" label="cfcatch">
</cfcatch>
</cftry>
转储将显示ColdFusion认为已上载的mime类型。
这仅用于开发/分析,您不希望将转储呈现给常规站点访问者。
以上是关于ColdFusion 10 CFFILE接受mimetype无法识别的主要内容,如果未能解决你的问题,请参考以下文章
如何让Coldfusion 10在Windows 10中与IIS 10一起使用
Coldfusion 10,IIS 7.5 - 即使文件存在也得到 404