2012-01-11 169 views
0

我的網站上我想讓人們上傳吉他專業文件。顯然沒有特定的MIME類型(我測試過,它給了我'application/octet-stream')。有沒有辦法檢查和100%確定文件是吉他專業文件,而不是別的? 感謝吉他pro文件的MIME類型?

+0

確實每個文件都有一個特定的標題可以檢查?用十六進制編輯器檢查其中的幾個。 – jValdron 2012-01-11 19:44:10

+0

閱讀標題字符串,並測試它是否匹配(正則表達式在這裏最好)。如果沒有達成一致的MIME類型,則無法對其進行測試。 (還有那些上傳不可靠)。如果你想用一些有用的東西來爲你的下載提供服務,請設置'audio/x-guitar-pro'類型的東西,而不是無用的'application/*' – mario 2012-01-11 19:44:40

回答

1

閱讀從上傳的文件的第一個字節。例如,這是我在創建類似功能時用於檢查上傳文件的方式。

$f = fopen($_FILES['tmp_name'], "rb"); 
fseek($f, 1); 
$in = fgets($f, 19); 
fclose($f); 

if ($in == 'FICHIER GUITAR PRO') { ... } 

因此,從1日到19日讀取字符會給我字符串'FICHIER GUITAR PRO'。這種方法適用於我的gp4文件。我也用來檢查文件擴展名。 但是請記住,您不能執行真正的檢查來過濾惡意上傳,因爲僞造第一個字節以及擴展非常容易。所以應該總是對所有上傳的文件進行一些額外的調整。

0

您應該分析該文件,看看版本字符串是正確的:

http://dguitar.sourceforge.net/GP4format.html 
+0

謝謝,我對php很新,我該怎麼做?這只是爲了gp4文件,對於其他版本有沒有相同的內容? – romainberger 2012-01-11 19:45:24