2011-06-08 54 views
0

我使用php上傳功能上傳我的界面中的文件。我在瀏覽器中使用firefox-3.6.11。我正在上傳Excel表格。我試圖讓type.I有以下方法測試的文件類型上傳的文件,php中的文件上傳

$Type = $HTTP_POST_FILES['TS_FILE']['type']; 
$Data = split ("/", $Type,2) ; 

if("$Data[1]" != "vnd.ms-excel" && $Data[1]!="octet-stream" && "$Data[1]"!="xls" && "$Data[1]" != "excel") 
{ 
    echo "<script> //alert ('inside alert') ; 
     alert ('The selected file is not in .xls format. Please select proper file.') ; 
     </script>"; 
    exit; 
} 

它工作正常。但是有一段時間,即使我上傳了Excel表格,我也收到了代碼中提到的警告消息。我不知道確切的問題是什麼。有沒有其他的Excel文件類型可用於Firefox?

+0

也許'var_dump'或$ Data的某些日誌會有幫助嗎? (它可以是xlsx ???) – kpower 2011-06-08 07:41:46

回答

-1

我不知道錯誤在代碼中的位置,因爲我沒有上傳文件。

我用百達上W3Schools的http://w3schools.com/php/php_file_upload.asp

的例子,然後進行編輯它在很大程度上使其處理正確類型的文件(至極是你似乎被卡住)。

你想檢查文件類型的方式是使用$_POST['file']['type'] 我看到你確實在使用它,但可能不正確。

你可以看看W3S他們如何對圖像進行文件類型檢查,這也可以用於xls。

找出你的瀏覽器發送的文件類型的方法是簡單地trigger_error("File type is: ".$_POST['file']['type']);

現在你可以讓一個if語句,因爲他們曾經在W3S使用文件鍵入報trigger_error驗證文件。

請注意,某些瀏覽器(尤其是IE)可能會使用不同的名稱。

(對不起,不能夠給你一個答案,你自己的腳本,但也許有一些事情我說,這可能有助於)

0

$_FILES['file']['type']值是由瀏覽器發送,瀏覽器獲得這來自底層操作系統的價值。如果我配置Windows並告訴它.xls有mime類型image/jpeg,我的瀏覽器(無論是Firefox,IE還是其他)會將該類型發送到您的應用程序。

所以,基本上,不要依靠$_FILES['file']['type']做驗證。獲取使用php's fileinfo該值自己的服務器端:

$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension 
$type = finfo_file($finfo, $_FILES['file']['tmpname']); 

此外,你可以從這個網站的Excel文件使用的MIME類型的列表:編輯http://filext.com/file-extension/XLS

:中$_FILES代替$_SERVER(抱歉,這是早這裏)