¿Cómo puedo averiguar el tipo MIME de un archivo (tipo de contenido)?


107

¿Hay alguna forma de averiguar 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 alguna razón detecta el archivo .png como un application/octet-streamarchivo.

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://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>

Esto funciona, pero necesito especificar un TIPO MIME.

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

Respuestas:


228

Utilice 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

No si usa el Git bash debajo de Windows.
tivo

1
Para obtener solo el tipo de mimo, puede hacer:file --mime-type FILE_NAME | awk '{print $2}'
Justin Jenkins

23
@JustinJenkins -b omite el nombre de archivo, por lo que file -b --mime-type FILE_NAMEdevuelve solo el tipo mime
jaygooby

okmimetypefinder filename
bitek

No reconoce application/xmlotext/xml
Tseng

24

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

p.ej xdg-mime query filetype <file>

si tienes yum,

yum install xdg-utils.noarch

Un ejemplo de comparación 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 lo muestra como texto sin formato.


xdg-mime query filetype install.sql; xprop: no se puede abrir la pantalla ''
un codificador el

xdg-mime es un script bash que depende en gran medida de variables de entorno. Algunos de ellos, por ejemplo, DE, no se configuran si no ha iniciado sesión en una sesión. Compruébelo usted mismo$ less $(which xdg-mime)
ManuelSchneid3r

10

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


1
¿A qué te refieres con la versión del archivo?
user2867106

1
@ user2867106 Creo que se refiere a la versión del comando de archivo.
jgh fun-run

4

Pruebe el filecomando con -iopción.

-iopción Hace que el comando de archivo genere cadenas de tipo mime en lugar de las más tradicionales legibles por humanos. Por lo tanto, puede decir en text/plain; charset=us-asciilugar de ASCII text.


2

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.