$ _FILES [''] ['type']将application / octet-stream作为输出

时间:2014-10-01 07:00:45

标签: php

说明:

我正在上传视频,并且像往常一样在上传之前检查文件的类型....文件没有上传所以我想输出$ _FILES的值['上传'] ['输入']它给了我以下

echo $_FILES['upload']['type'];

out put

应用/八位字节流

所以由于它失败了代码中的所有检查,如下面的

if(($_FILES['group_video']["type"] == "video/FLV") 
|| ($_FILES['group_video']["type"] == "video/MP4")

in_array($extension, $allowedExts)

我该如何解决这个问题? 为什么不显示视频的类型? 我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

马里奥对上述评论是正确的;您的客户已确定FLV的类型为application/octet-stream。这是FLV文件的有效mime类型,因此您需要在代码中对其进行说明。我建议你有一个你接受的文件扩展名列表,并附上一个允许的mime类型列表给每一个。例如:

array (
    'mp4' => array ('audio/mp4', 'video/mp4'),
    'flv' => array ('video/flv', 'video/x-flv', 'application/octet-stream')
);

现在,当您上传时,首先获得扩展名并检查mime类型是否与您为扩展程序接受的类型之一匹配。

这可以让您对错误上传错误命名或格式化媒体的人有所保证,但不会阻止用户故意上传含有恶意内容的文件;在被信任之前,应检查用户上传的所有内容是否有病毒。