私はCVSファイルのアップロードを受け入れるべきフォームを持っています。 は、だから私は、次でそれを保護:PHPでMIMEタイプの検出に問題があります
if (!in_array($mimeType, array("text/csv"))) throw new TMSException("Error");
すべての私のテストは、私のdevの環境にうまくいったが、今私は、Windowsクライアント上で、同じ正確なファイルのために、私は別のMIMEタイプを取得することが分かりました。
これは私のUbuntu PCに接続するときに私が得るものです:
/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 Explorerは.csvファイルをapplication/vnd.ms-excelとして扱います) – Svekke
こんにちは! $ _FILES ["file"] ["type"]は 'application/vnd.ms-excel'です。同じファイルでアップロードをテストしています。 私は別のアプローチを使用しなければならないと思います。 –
クライアントはMIMEタイプを設定します。あなたはそれを支配しません。 – zeroflagL