¿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.