ColdFusion 10 CFFILE接受mimetype无法识别

问题描述 投票:0回答:2

我在上传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
coldfusion mime-types coldfusion-10
2个回答
6
投票

我将不得不推测,直到我能看到你的<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的页面。 (较旧的文章,但仍有相关的提示。)

我发现的其他一些参考资料可能会有所帮助:


0
投票

你可能有一些奇怪的哑剧类型。如果在标记周围使用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类型。

这仅用于开发/分析,您不希望将转储呈现给常规站点访问者。

© www.soinside.com 2019 - 2024. All rights reserved.