2010-10-19 128 views
0

這將是驗證上傳表單的最佳方法?驗證上傳表單的最佳方法是什麼?

此時使用mime類型,但這並不工作 - 即使正在尋找MIME類型中的video,也不能上傳mpegs。

謝謝

湯姆

+0

你意味着驗證文件類型? – MatTheCat 2010-10-19 09:14:06

+0

是啊,對不起 - 所以沒有人可以上傳一個PHP腳本並運行它或類似的東西。 – 2010-10-19 11:18:52

回答

1

這似乎工作:

switch (strtolower($_FILES["file"]["type"])){ 
     case "application/msword": 
     case "application/pdf": 
     case "application/vnd.ms-excel": 
     case "application/vnd.ms-powerpoint": 
     case "application/zip": 
     case "image/gif": 
     case "image/jpeg": 
     case "image/png": 
     case "image/tiff": 
     case "text/plain": 
     case "video/mpeg": 
     case "video/x-mpeg2": 
     case "video/msvideo": 
     case "video/quicktime": 
      // do it 
      break; 
     default: 
      // don't do it 
      break; 
    } 

對於其他人,這可能有助於看看http://www.sfsu.edu/training/mimetype.htm添加您可能需要檢查其他MIME類型。

0

我猜你要檢查,如果上傳的文件是一個有效的視頻文件。因此,您可以檢查的一件事是文件擴展名(用於mpeg視頻的IE「.mpg」)。由於沒有我知道的網絡框架具有內部視頻驗證功能,因此您必須依靠一些外部程序/庫來檢查視頻文件是否真的是視頻文件。也許FFMPEG能夠做到這一點。

+0

但是再次使用像FFMPEG這樣一個巨大的圖書館這樣一個小劇本是「生病」。 – jolt 2010-10-19 09:34:17

0

嘗試像這樣:

$mime = strtolower($_FILES["file"]["type"]); 
$parts = explode("/",$mime); 

switch($parts[0]) 
{ 
    case 'video': 
     //Video file, use $parts[1] to check the video subtype 
    break; 
    case 'image': 
    break; 
} 
+0

這就是我最初的,但它似乎並沒有工作,不知道爲什麼,我想也許這是因爲我沒有'strtolower(...)':)# – 2010-10-19 11:38:13

相關問題