2012-12-21 22 views
5

Tôi có một trang để tải lên video, và tôi muốn các loại tệp được mp4 flash và tệp webm. tất cả các tệp mở rộng mp4 và tệp webm hoạt động tốt nhưng các tệp flash (.flv và .f4v) không được nhận dạng và do đó, php trả về giá trị 'application/octet-stream' mà tôi tin là MIME mặc định cho bất kỳ tệp nào mà không có ' t được công nhận. là có một phương pháp tốt hơn so với mã này sẽ nhận ra các tập tin flash cho có MIMES đúng (video/x-flv và video/x-f4v) tương ứng?php tải lên không recoginsing .flv và f4v phần mở rộng

$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"; 

Trả lời

2

Có lẽ bạn có thể thử mã này:

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

Như đã trình bày here, bạn sẽ cần PHP> = 5.3.0, nó là một vấn đề?

ý tưởng khác có thể là để kiểm tra chữ ký dữ liệu (xem there):

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

Tôi có php 5.4.3 * Tôi nghĩ *, vì vậy nó nên được tốt nhờ, Ill cho nó một shot – user1559811

2

Watching tại các mô tả về $ _FILES [ 'userfile'] [ 'type'] trong tài liệu php chúng ta có thể xem:

Loại mime của tệp, nếu trình duyệt cung cấp thông tin này. Ví dụ sẽ là "hình ảnh/gif". Loại mime này tuy nhiên không được kiểm tra ở phía PHP và do đó không coi trọng giá trị của nó.

Vì vậy, các tùy chọn Tiger-222 có vẻ là cơ hội tốt nhất của bạn để có được những giá trị đích thực:

<?php 
    $finfo = finfo_open(); 
    $fileinfo = finfo_file($finfo, $file, FILEINFO_MIME); 
    finfo_close($finfo); 
?> 
Các vấn đề liên quan