web-dev-qa-db-fra.com

Comment connaître le type MIME d'un fichier (Content-Type)?

Existe-t-il un moyen de connaître le type MIME (ou est-ce appelé "Content-Type"?) D'un fichier dans un script bash Linux?

J’en ai besoin, c’est parce que ImageShack semble en avoir besoin pour télécharger un fichier, car pour une raison quelconque, il détecte le fichier .png en tant que application/octet-stream fichier.

J'ai vérifié le fichier et il s’agit bien d’une image PNG:

$ cat /1.png 
?PNG
(with a heap load of random characters)

Cela me donne l'erreur:

$ curl -F "fileupload=@/1.png" http://www.imageshack.us/upload_api.php
<links>
<error id="wrong_file_type">Wrong file type detected for file 1.png:application/octet-stream</error>
</links>

Cela fonctionne, mais je dois spécifier un type MIME.

$ curl -F "fileupload=@/1.png;type=image/png" http://www.imageshack.us/upload_api.php
91
Mint

Utilisez file. Exemples:

> file --mime-type image.png
image.png: image/png

> file -b --mime-type image.png
image/png

> file -i FILE_NAME
image.png: image/png; charset=binary
187
bhups

l’un des autres outils (en plus du fichier) que vous pouvez utiliser est xdg-mime

par exemple xdg-mime query filetype <file>

si vous avez miam,

yum install xdg-utils.noarch

Exemple de comparaison de xdg-mime et fichier sur un fichier Subrip (sous-titres)

$ xdg-mime query filetype subtitles.srt
application/x-subrip

$ file --mime-type subtitles.srt
subtitles.srt: text/plain

dans le fichier ci-dessus, affichez-le uniquement en texte brut.

21
ghostdog74

version du fichier <5: fichier -i -b/chemin/fichier /
version du fichier> = 5: fichier --mime-type -b/chemin/fichier /

9
Andrey

Essayez la commande file avec l'option -i.

Option -i Amène la commande file à générer des chaînes de type mime plutôt que des chaînes plus lisibles par l'homme. Ainsi, on peut dire text/plain; charset=us-ascii Plutôt que ASCII text.

2
codaddict

file --mime fonctionne, mais pas --mime-type. au moins pour mon RHEL 5.

1
fanchyna