2014-10-01 23 views
0

描述:

我上傳視頻和往常一樣檢查文件的類型上傳之前.. ..該文件沒有被上傳,所以我想輸出$ _FILES的價值[「上傳」] [「型」],它給了我下面的

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

出把

應用程序/八位字節 - 流

如此,由於它未能在所有的代碼類似以下

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

in_array($extension, $allowedExts) 

我應該如何解決這個問題?檢查 爲什麼不顯示視頻的類型? 我錯過了什麼?

+0

$ _FILES數組的其餘部分是什麼樣的?這裏 – 2014-10-01 07:03:25

+0

@SimonBrahan是的var_dump的輸出($ _ FILES) 陣列(大小= 1) 'GROUP_VIDEO'=> 陣列(尺寸= 5) '名稱'=>字串「其所有關於遊戲 - YouTube.FLV '(長度= 23) 'type'=>字符串'application/octet-stream'(長度= 24) 'tmp_name'=>字符串'C:\ wamp \ tmp \ phpCA89.tmp'(長度= 23) 'error'=> int 0 'size'=> int 19276444 – 2014-10-01 07:08:07

+1

瀏覽器決定發送什麼MIME類型;而且他們通常不擅長關聯。 (無論如何,您的代碼無法可靠地工作,因爲MIME標識符不區分大小寫,並且可以攜帶屬性。) – mario 2014-10-01 07:08:25

回答

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類型相匹配您接受擴展的類型之一。

這會給你一些保證,防止人們錯誤地上傳錯誤命名或格式化的媒體,但不會阻止用戶故意上傳帶有惡意內容的文件;所有用戶上傳的內容在被信任之前都應該檢查病毒。

相關問題