Come posso trovare il tipo MIME di un file (Content-Type)?


108

C'è un modo per scoprire il tipo MIME (o si chiama "Content-Type"?) Di un file in uno script bash di Linux?

Il motivo per cui ne ho bisogno è perché ImageShack sembra aver bisogno di esso per caricare un file, poiché per qualche motivo rileva il file .png come application/octet-streamfile.

Ho controllato il file ed è davvero un'immagine PNG:

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

Questo mi dà l'errore:

$ 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>

Funziona, ma devo specificare un MIME-TYPE.

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

Risposte:


229

Usa file. Esempi:

> 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, se usi Git bash sotto Windows.
tivo

1
Per ottenere solo il tipo mimo potresti fare:file --mime-type FILE_NAME | awk '{print $2}'
Justin Jenkins

23
@JustinJenkins -b omette il nome del file, quindi file -b --mime-type FILE_NAMErestituisce solo il tipo MIME
jaygooby

oppurekmimetypefinder filename
bitek

Non riconosce application/xmlotext/xml
Tseng

24

uno degli altri strumenti (oltre a file) che puoi usare è xdg-mime

per esempio xdg-mime query filetype <file>

se hai yum,

yum install xdg-utils.noarch

Un esempio di confronto tra xdg-mime e file su un file Subrip (sottotitoli)

$ xdg-mime query filetype subtitles.srt
application/x-subrip

$ file --mime-type subtitles.srt
subtitles.srt: text/plain

nel file sopra mostralo solo come testo normale.


xdg-mime query filetype install.sql; xprop: impossibile aprire il display ''
un programmatore il

xdg-mime è uno script bash che fa molto affidamento sulle variabili d'ambiente. Alcuni di essi, ad esempio DE, non vengono impostati se non si è connessi a una sessione. $ less $(which xdg-mime)
Dai

10

versione file <5: file -i -b / percorso / a /
versione file file> = 5: file --mime-type -b / percorso / a / file


1
cosa intendi per versione del file?
user2867106

1
@ user2867106 Penso che si riferisca alla versione del comando file.
jgh fun-run

4

Prova il filecomando con l' -iopzione.

-iopzione Fa in modo che il comando file emetta stringhe di tipo mime invece di quelle più tradizionali leggibili dall'uomo. Così può dire text/plain; charset=us-asciipiuttosto che ASCII text.


2

file --mime funziona, ma non --mime-type. almeno per il mio RHEL 5.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.