Je ne trouve pas le type MIME correct pour les polices TrueType. J'en ai besoin car j'utilise la classe de téléchargement de fichiers (CodeIgniter) pour télécharger des fichiers, et je souhaite autoriser uniquement le téléchargement de TTF. J'ai essayé ceci:
'ttf' => 'font/ttf'
'ttf' => 'font/truetype'
Sans succès.
Des idées ?
TTF n'a pas de type MIME affecté. Vous devrez utiliser le plus général application/octet-stream
, qui est utilisé pour indiquer des données binaires sans type MIME affecté.
J'ai vu font/ttf
et application/x-font-ttf
utilisé comme types MIME pour TTF. Mais si vos fichiers sont téléchargés en tant que application/octet-stream
et vous ne voulez pas simplement faire confiance au .ttf
extension de fichier (ou si vous souhaitez gérer des fichiers sans extension), vous devrez vérifier le contenu du fichier pour voir s'il s'agit de fichiers TTF. Le fichier UNIX magic
indique qu'un TTF commencera par les 5 octets
00 01 00 00 00
(C'est 00 01 00 00
de la version de table GDEF et le premier 00
du décalage de la table GlyphClassDef.)
Si votre fichier commence par ces 5 octets, c'est probablement un TTF.
Depuis février 2017, RFC 8081 ajoute les types de médias font/*, qui sont également répertoriés dans la liste IANA Media Types . font/ttf
est dans cette liste. Les navigateurs peuvent mettre un certain temps à se rattraper.
Je sais que c'est assez ancien, mais personne ne semble avoir fourni d'exemple concret. Nous voici donc pour les générations futures:
J'ai eu le même problème avec Apache2 et Chrome. Chrome avertirait qu'un fichier envoyé avec le type mime d'application/octet-stream était vraiment un fichier de police - ce qu'il était.
Le correctif pour moi était d'ajouter la ligne suivante dans mon fichier de configuration Apache2:
Application AddType/x-font-ttf .ttf
ps:
J'avais essayé de mettre à jour le fichier magique mais cela n'a pas fonctionné après les rechargements complets d'Apache2. Les correspondances que j'ai essayées (en utilisant de vrais caractères de tabulation entre les champs et selon les modèles magiques référencés ci-dessus) sont ci-dessous:
# True Type fonts 0 chaîne\000\001\000\000\000 application/x-font-ttf 0 chaîne\000\001\000\000\000 Application mime de données de police TrueType/x-font-ttf
Je n'ai aucune expérience avec codeigniter mais j'ai tendance à croire que le mimetype correct est:
application/x-font-ttf
Je ne sais pas si cela résout votre problème
Il est temps de faire un débogage! Si quelque chose ne fonctionne pas, la meilleure option est d'ouvrir le code et de se salir les mains.
Ouvrez la bibliothèque Uploads (système/bibliothèques/Upload.php) et recherchez ce morceau de code autour de la ligne 200:
// Set the uploaded data as class variables
$this->file_temp = $_FILES[$field]['tmp_name'];
$this->file_size = $_FILES[$field]['size'];
$this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $_FILES[$field]['type']);
$this->file_type = strtolower(trim(stripslashes($this->file_type), '"'));
$this->file_name = $this->_prep_filename($_FILES[$field]['name']);
$this->file_ext = $this->get_extension($this->file_name);
$this->client_name = $this->file_name;
Vous verrez que $ this-> file_type y est défini. var_dump () et voyez ce qu'il contient.
Il est probable que vous ayez un type MIME obscur que CodeIgniter ne connaît pas. Mettez ce type MIME dans config/mimes.php et cela devrait fonctionner correctement.
Lorsque vous l'avez fait fonctionner et acceptez cette réponse, veuillez commenter avec le type MIME que vous avez utilisé et je l'ajouterai à CodeIgniter Reactor pour vous assurer que personne d'autre ne reste bloqué.
Pouvez-vous essayer ceci:
application/font-sfnt
Comme je peux le voir dans iana, l'en-tête correct est celui-ci pour TTF: http://www.iana.org/assignments/media-types/application/font-sfnt