déterminer si un type MIME est binaire ou texte basé
-
28-09-2019 - |
Question
Y at-il une bibliothèque qui permet de déterminer si un type de contenu donné est binaire ou en mode texte?
Il est évident que text/*
est toujours textuelle, mais pour des choses comme application/json
, image/svg+xml
ou même application/x-latex
il est assez difficile sans inspecter les données réelles.
La solution
Il y a une enveloppe pour libmagic pour python - pymagic . Cest la meilleure méthode pour accomplir ce que vous voulez. Gardez à l'esprit que la magie est aussi bonne que l'empreinte digitale. Vous pouvez avoir des faux positifs si quelque chose « regarde » comme un autre format de fichier, mais la plupart des cas pymagic vous donnera ce que vous avez besoin.
Une chose à surveiller serait la « solution simple » de vérifier si l'un des personnages sont «en dehors de la plage ASCII imprimable, comme vous unicode rencontre probablement qui ressemblera binaire (et en fait, soit binaire), même si elle est juste le contenu textuel.
Autres conseils
Habituellement les programmes qui déterminent le type MIME vous indiquera également le jeu de caractères. Par exemple, file(1)
(et libmagic correspondant) donnera la sortie suivante:
> file --mime-encoding /bin/ls
/bin/ls: binary
> file --mime-encoding /etc/passwd
/etc/passwd: us-ascii