2011-08-03 42 views
0

我想要測試上傳的文件是否爲CSV文件,選擇csv文件後再用此代碼進行確認,並仍然給我發出不是CSV文件請幫我解決的消息。檢查上傳的文件是否爲CSV文件

if($_FILES["file"]["type"] <> "application/vnd.ms-excel"){ 
    die("This is not a CSV file."); 
} 
+7

csv文件不是excel文件。 – marto

+0

爲什麼你不只是轉儲回來的類型,並對此進行測試? –

+0

如果它是一個文本文件,它可能是也可能不是一個CSV文件。你只能真正知道你是否試圖解析它。另外,不要使用'$ _FILES ['type']'作爲任何事情,因爲這是完全未經驗證的數據。 – deceze

回答

1

最簡單的檢查是「文件名是否以.csv結尾」。這會讓你獲得最大的方式,但有可能有人可以嘗試上傳帶有CSV擴展名的其他內容。

您的下一個檢查應該是該文件是文本(而不是二進制文件;請注意,Excel文件應該會失敗)。要做到這一點,請檢查ascii representation of each character:除回車符,換行符和製表符之外,應該沒有小於32的值。

一旦您知道該文件是文本,就可以通過運行CSV parser並查看是否結果是無稽之談。

+0

+1,可能希望將選項卡添加到允許的字符列表中。 –

+0

@Anders:很好地叫;我已經修復了文字。 –

相關問題