2010-02-09 26 views
72

C'è un modo per scoprire il MIME-TYPE (o si chiama "Content-Type" ...) di un file in uno script di bash linux?Come posso trovare un file "mime-type (Content-Type?)"?

La ragione per cui ho bisogno è perché ImageShack sembra bisogno di caricare un file come per qualche motivo rileva il file .png come "application/octet-stream" ...

I'v verificato il file , ed è davvero un .png

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

Questo mi dà l'errore:

$ curl -F "[email protected]/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> 

Questo funziona, ma ho bisogno di specificare un tipo MIME.

$ curl -F "[email protected]/1.png;type=image/png" http://www.imageshack.us/upload_api.php 

risposta

143

Utilizzare 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 
+0

Cheers, "file --mime-type /1.png" funziona alla grande! – Mint

+0

Non se si utilizza Git bash sotto Windows. – tivo

+1

Per ottenere ** solo ** il tipo mime che potresti fare: 'file --mime-type FILE_NAME | awk '{print $ 2}' ' –

16

uno degli altri strumenti (oltre file) che è possibile utilizzare è xdg-mime

esempio xdg-mime query filetype query filetype <file>

se avete yum,

yum install xdg-utils.noarch

Un esempio di confronto di 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 riportato solo come testo normale.

+0

xdg-mime query filetype install.sql; xprop: impossibile aprire la visualizzazione '' –

+0

xdg-mime è uno script di bash basato su variabili d'ambiente. Alcuni di essi, ad es. DE non sono impostati se non si è connessi a una sessione. Controllalo da solo $ $ $ (quale xdg-mime) ' – ManuelSchneid3r

1

Provare il comando file con l'opzione -i.

-i opzione Consente al comando file di generare stringhe di tipo mime anziché quelle più leggibili da umani. Quindi può dire text/plain; charset=us-ascii piuttosto che ASCII text.

1

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

+0

Funziona anche con Linux Mint 12 –

7

versione del file < 5: -i file -b/path/to/file
versione file> = 5: di file --mime-tipo -b/percorso/to/file

Problemi correlati