J'ai un formulaire qui devrait accepter le téléchargement de fichiers CVS. Je l'ai donc protégé par les éléments suivants:Avoir des problèmes avec la détection de type mime en php
if (!in_array($mimeType, array("text/csv"))) throw new TMSException("Error");
Tous mes tests se sont bien passés sur mon environnement de développement, mais maintenant je trouve que, sur le client Windows, pour exactement le même fichier, je reçois un autre type mime.
C'est ce que je reçois lors de la connexion sur mon PC 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
Et ce que je reçois en essayant de télécharger le même fichier à partir d'une machine 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
Tout ideia pourquoi PHP détecte un type mime différent pour le même fichier? Et comment je peux résoudre ça?
Le type MIME pourrait ne pas être « text/csv » certains systèmes de lecture/les enregistrer différemment. (Internet Explorers traite les fichiers .csv comme application/vnd.ms-excel) – Svekke
Hi! Je teste le téléchargement avec le même fichier, et avec chrome dans les deux environnement, et dans Windows, $ _FILES ["fichier"] ["type"] est 'application/vnd.ms-excel'; Je suppose que je vais devoir utiliser une approche différente –
Le client définit le type MIME. Vous n'avez aucun contrôle sur cela. – zeroflagL