2012-12-21 110 views
5

मेरे पास वीडियो अपलोड करने के लिए एक पृष्ठ है, और मैं चाहता हूं कि फ़ाइल प्रकार mp4 फ़्लैश और वेबएम फ़ाइलें हों। सभी एमपी 4 एक्सटेंशन फाइलें और वेबएम फाइलें ठीक काम करती हैं लेकिन फ्लैश फाइलें (.flv और .f4v) पहचाने नहीं जाते हैं और इसलिए php मान 'एप्लिकेशन/ऑक्टेट-स्ट्रीम' देता है जो मुझे लगता है कि किसी भी फाइल के लिए डिफ़ॉल्ट एमआईएम है जो ' टी मान्यता प्राप्त है। क्या इस कोड की तुलना में एक बेहतर तरीका है जो फ्लैश फाइलों को क्रमशः सही MIMES (वीडियो/एक्स-FLV और वीडियो/x-f4v) के लिए पहचान लेगा?php अपलोड reoginsing .flv और f4v एक्सटेंशन

$type = $_FILES["uploaded"]["type"]; 
$allowedTypes = ["video/mp4","video/quicktime","video/x-flv","video/x- f4v", 
       "video/webm"]; 
$isRefusedType = !in_array($type, $allowedTypes); 


if ($isRefusedType) 
{ 
    $message="not an accepted file type"; 
} 
    else $message="OK"; 

उत्तर

2

शायद आप इस कोड की कोशिश कर सकते हैं:

<?php 
    $finfo = finfo_open(FILEINFO_MIME_TYPE); // mimetype 
    $type = finfo_file($finfo, $filename); 
    finfo_close($finfo); 
?> 

के रूप में वर्णित here, आप की आवश्यकता होगी पीएचपी> = 5.3.0, यह एक समस्या है?

एक और विचार डेटा हस्ताक्षर की जांच करने के लिए हो सकता है (there देखें):

<?php 
    $s = file_get_contents($_FILES["uploaded"]["tmp_name"]); 
    if (substr($s,0,3) == 'FLV') { /* It's good! */ } 
?> 
+0

मैं php 5.4.3 है * मैं * लगता है, तो यह ठीक धन्यवाद, बीमार देना होना चाहिए यह एक शॉट है – user1559811

2

php प्रलेखन हम कर सकते हैं में $ _FILES [ 'userfile'] [ 'प्रकार'] का वर्णन पर देखना देखें:

ब्राउज़र का यह माइम प्रकार, यदि ब्राउजर ने यह जानकारी प्रदान की है। एक उदाहरण "छवि/gif" होगा। हालांकि इस माइम प्रकार को PHP पक्ष पर चेक नहीं किया गया है और इसलिए इसके मान को मंजूरी नहीं दी गई है।

तो टाइगर-222 विकल्प वास्तविक मूल्य प्राप्त करने के लिए अपने सबसे अच्छा मौका हो रहा है:

<?php 
    $finfo = finfo_open(); 
    $fileinfo = finfo_file($finfo, $file, FILEINFO_MIME); 
    finfo_close($finfo); 
?>