我有一個表單,它應該接受CVS文件的上傳。 所以我用下面的保護了它:在php中使用MIME類型檢測時遇到麻煩
if (!in_array($mimeType, array("text/csv"))) throw new TMSException("Error");
所有我的測試中順利在我的開發環境,但現在我發現,Windows客戶機上,對於完全相同的文件,我得到一個不同的MIME類型。
這是我得到我的Ubuntu電腦上連接時:
/var/www/ct/preinvoice.php:203:
array (size=1)
'tariffLines' =>
array (size=5)
'name' => string 'C&T - Labatut.csv' (length=17)
'type' => string 'text/csv' (length=8)
'tmp_name' => string '/tmp/php2vIcaE' (length=14)
'error' => int 0
'size' => int 3812
這是我在嘗試上傳從Windows計算機的同一個文件時:
/var/www/ct/preinvoice.php:203:
array (size=1)
'tariffLines' =>
array (size=5)
'name' => string 'C&T - Labatut.csv' (length=17)
'type' => string 'application/vnd.ms-excel' (length=24)
'tmp_name' => string '/tmp/phpPaMvN3' (length=14)
'error' => int 0
'size' => int 3812
任何IDEIA爲什麼PHP爲同一個文件檢測到不同的MIME類型?我該如何解決這個問題?
MIME類型可能不是「文字/ CSV」一些系統讀取/保存他們不同。 (Internet Explorers將.csv文件視爲application/vnd.ms-excel) – Svekke
嗨!我使用相同的文件測試上傳,並且在兩種環境下以及在windows中,$ _FILES [「file」] [「type」]是'application/vnd.ms-excel'; 我想我必須使用不同的方法 –
客戶端設置MIME類型。你無法控制它。 – zeroflagL