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
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
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.
version du fichier <5: fichier -i -b/chemin/fichier /
version du fichier> = 5: fichier --mime-type -b/chemin/fichier /
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
.
file --mime fonctionne, mais pas --mime-type. au moins pour mon RHEL 5.