¿Cómo puedo averiguar el tipo de archivo MIME (Content-Type)?

¿Hay alguna manera de descubrir el tipo MIME (o se llama “Content-Type”?) De un archivo en un script bash de Linux.

La razón por la que lo necesito es porque ImageShack parece necesitarlo para cargar un archivo, ya que por algún motivo detecta el archivo .png como un archivo application/octet-stream .

Revisé el archivo, y realmente es una imagen PNG:

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

Esto me da el error:

 $ curl -F "fileupload=@/1.png" http://sofes.miximages.com/linux/upload_api.php links error id=wrong_file_typeWrong file type detected for file 1.png:application/octet-stream  

Esto funciona, pero necesito especificar un MIME-TYPE.

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

Usa el file Ejemplos:

 > 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 

una de las otras herramientas (además del archivo) que puede usar es xdg-mime

por ejemplo xdg-mime query filetype query filetype

si tienes yum,

yum install xdg-utils.noarch

Una comparación de ejemplo de xdg-mime y archivo en un archivo Subrip (subtítulos)

 $ xdg-mime query filetype subtitles.srt application/x-subrip $ file --mime-type subtitles.srt subtitles.srt: text/plain 

en el archivo anterior, solo se muestra como texto sin formato.

versión de archivo <5: archivo -i -b / ruta / a / archivo
versión de archivo> = 5: archivo –mime-type -b / path / to / file

Pruebe el comando de file con la opción -i .

Opción -i Hace que el comando de archivo emita cadenas de tipo mime en lugar de las más tradicionales de lectura humana. Por lo tanto, puede decir text/plain; charset=us-ascii text/plain; charset=us-ascii lugar de ASCII text .

archivo –mime funciona, pero no –mime-type. al menos para mi RHEL 5.