2011-09-14 45 views
0

我有PHP 5.3並使用finfo來確定上傳文件的MIME類型。 然而對於一些JavaScript文件,我得到了mime類型的文本/ x-C++,這當然是不正確的。finfo在某些JS文件(text/x-C++)上返回錯誤的MIME類型?

有沒有人有一個想法,爲什麼有時會發生這種情況。因此,我不能以基於檢查MIME類型的方式上傳JS文件。

返回此MIME類型的文件的內容是:

(function($) { 

$(document).ready(function() { 


     $(function() { 
     // OPACITY OF BUTTON SET TO 50% 
     $(".fade").css("opacity","1.0"); 

     // ON MOUSE OVER 
     $(".fade").hover(function() { 

     // SET OPACITY TO 100% 
     $(this).stop().animate({ 
     opacity: 0.7 
     }, "quick"); 
     }, 

     // ON MOUSE OUT 
     function() { 

     // SET OPACITY BACK TO 50% 
     $(this).stop().animate({ 
     opacity: 1.0 
     }, "quick"); 
     }); 
    }); 


// End of closure & jquery wraping 
}); 
})(jQuery); 

回答

1

我遇到了同樣的問題,有一天(PDF文件被上傳的應用程序/數據),據我知道這是一個瀏覽器問題,而不是服務器端,因爲我有兩個瀏覽器上傳完全相同的PDF,一個說應用程序/ PDF和其他應用程序/數據,我唯一的建議使用,因爲檢查內容類型有點片狀,你應該做你自己的類型檢查。

對於您的情況,我只需確保mime類型以「text /」開頭,然後檢查上傳文件的文件擴展名。如果你特別勇敢,你可以編寫一些代碼來對上傳的文件進行語法檢查,但這可能比你想做的工作多得多。

+0

允許「text /」時出現的問題是,我們會允許PHP和其他危險腳本上傳,隱藏在a.js文件或其他內容中,這是我們想要避免的。你知道這是FINFO函數的問題嗎? – Jorre

+1

我會推薦這爲您的上傳目錄:http://stackoverflow.com/questions/1271899/disable-php-in-directory-including-all-sub-directories-with-htaccess – Matthew