我想要測試上傳的文件是否爲CSV文件,選擇csv文件後再用此代碼進行確認,並仍然給我發出不是CSV文件請幫我解決的消息。檢查上傳的文件是否爲CSV文件
if($_FILES["file"]["type"] <> "application/vnd.ms-excel"){
die("This is not a CSV file.");
}
我想要測試上傳的文件是否爲CSV文件,選擇csv文件後再用此代碼進行確認,並仍然給我發出不是CSV文件請幫我解決的消息。檢查上傳的文件是否爲CSV文件
if($_FILES["file"]["type"] <> "application/vnd.ms-excel"){
die("This is not a CSV file.");
}
最簡單的檢查是「文件名是否以.csv
結尾」。這會讓你獲得最大的方式,但有可能有人可以嘗試上傳帶有CSV擴展名的其他內容。
您的下一個檢查應該是該文件是文本(而不是二進制文件;請注意,Excel文件應該會失敗)。要做到這一點,請檢查ascii representation of each character:除回車符,換行符和製表符之外,應該沒有小於32的值。
一旦您知道該文件是文本,就可以通過運行CSV parser並查看是否結果是無稽之談。
+1,可能希望將選項卡添加到允許的字符列表中。 –
@Anders:很好地叫;我已經修復了文字。 –
csv文件不是excel文件。 – marto
爲什麼你不只是轉儲回來的類型,並對此進行測試? –
如果它是一個文本文件,它可能是也可能不是一個CSV文件。你只能真正知道你是否試圖解析它。另外,不要使用'$ _FILES ['type']'作爲任何事情,因爲這是完全未經驗證的數據。 – deceze