我在上传WMV和MPEG文件时遇到问题,'video / x-ms-wmv'(等)在接受列表中 - 我收到错误
MIME类型或上传文件的扩展名 服务器不接受application / octet-stream
使用Chrome,我会检查标题并显示
内容 - 处置:表单数据; NAME = “fv_file”;文件名= “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
答案 0 :(得分: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
。因为你没有在你的代码中指定它,它是 on 。
注意:如果您收到类似&#34的错误;服务器未接受上传文件(图片/ jpeg)的MIME类型&#34;,请输入accept =&#34 ;图像/ JPEG&#34;接受JPEG文件。
Taken from the Adobe documentation here。从您发布的错误消息中,尝试上传文件类型为&#34; application / octet-stream&#34;的文件。您似乎期待&#34; video / x-ms-wmv&#34;。因此,您可以尝试找出您的浏览器尝试将文件上传为&#34; application / octet-stream&#34;或将该mime类型添加到您的accept
属性中。 警告:还可以上传您可能不想要的其他类型的文件。
cffile accept
属性使用浏览器发送给服务器的mime类型。再次阅读...您的浏览器告诉cffile
mime类型是什么。欺骗mime类型非常容易
取自Tips for Secure File Uploads with ColdFusion的Pete Freitag的页面。 (较旧的文章,但仍有相关提示。)
我发现其他一些参考资料可能会有所帮助:
答案 1 :(得分: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类型。
这仅用于开发/分析,您不希望将转储呈现给常规站点访问者。