167 votes

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

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

La raison pour laquelle j'en ai besoin est qu'ImageShack semble en avoir besoin pour télécharger un fichier, car pour une raison quelconque, il détecte le fichier .png comme un fichier de type 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)

Je reçois alors l'erreur suivante :

$ 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 MIME-TYPE.

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

320voto

bhups Points 6257

Utilisation 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

31voto

ghostdog74 Points 86060

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

eg xdg-mime query filetype <file>

si vous avez yum,

yum install xdg-utils.noarch

Exemple de comparaison entre xdg-mime et file 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 ne l'affiche qu'en texte brut.

12voto

Andrey Points 61

version du fichier < 5 : file -i -b /chemin/vers/fichier
version du fichier >=5 : file --mime-type -b /path/to/file

6voto

codaddict Points 154968

Essayez le file avec la commande -i option.

-i L'option file permet à la commande file de produire des chaînes de type mime plutôt que des chaînes plus traditionnelles lisibles par l'homme. Ainsi, la commande peut dire text/plain; charset=us-ascii plutôt que ASCII text .

2voto

fanchyna Points 519

File --mime fonctionne, mais pas --mime-type. du moins pour mon RHEL 5.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X