views:

455

answers:

3

Is there a way to find out the MIME-TYPE (or is it called "Content-Type"...) of a file in a linux bash script?

The reason I need it is because imageshack appears to need it to upload a file as for some reason it detects the .png file as an "application/octet-stream"…

I'v checked the file, and it really is a .png

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

This gives me the 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>

This works, but I need to specify a MIME-TYPE.

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

file --mime-type FILE_NAMEor
file -i FILE_NAME

bhups
Cheers, "file --mime-type /1.png" works great!
Mint
+2  A: 

one of the other tool (besides file) you can use is xdg-mime

eg xdg-mime query filetype query filetype <file>

if you have yum,

yum install xdg-utils.noarch

An example comparison of xdg-mime and file on a Subrip(subtitles) file

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

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

in the above file only show it as plain text.

ghostdog74
+1  A: 

Try the file command with -i option.

-i option Causes the file command to output mime type strings rather than the more traditional human readable ones. Thus it may say text/plain; charset=us-ascii rather than ASCII text.

codaddict