Bagaimana cara mengetahui tipe MIME file (Tipe Konten)?

108

Apakah ada cara untuk mengetahui tipe MIME (atau disebut "Content-Type"?) Dari file dalam skrip bash Linux?

Alasan saya membutuhkannya adalah karena ImageShack tampaknya memerlukannya untuk mengupload file, karena untuk beberapa alasan ia mendeteksi file .png sebagai application/octet-streamfile.

Saya telah memeriksa file tersebut, dan itu benar-benar gambar PNG:

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

Ini memberi saya kesalahan:

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

Ini berfungsi, tetapi saya perlu menentukan MIME-TYPE.

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

Jawaban:

229

Gunakan file. Contoh:

> 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
bhups
sumber
Tidak jika Anda menggunakan Git bash di bawah jendela.
tivo
1
Untuk mendapatkan hanya mime-type yang dapat Anda lakukan:file --mime-type FILE_NAME | awk '{print $2}'
Justin Jenkins
23
@JustinJenkins -b menghilangkan nama file jadi file -b --mime-type FILE_NAMEmengembalikan hanya jenis pantomim
jaygooby
ataukmimetypefinder filename
bitek
Tidak mengenali application/xmlatautext/xml
Tseng
24

salah satu alat lain (selain file) yang dapat Anda gunakan adalah xdg-mime

misalnya xdg-mime query filetype <file>

jika kamu punya yum,

yum install xdg-utils.noarch

Contoh perbandingan xdg-mime dan file pada file Subrip (subtitle)

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

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

pada file di atas hanya menampilkannya sebagai teks biasa.

anjing hantu74
sumber
xdg-mime query jenis file install.sql; xprop: tidak dapat membuka tampilan ''
kode
xdg-mime adalah skrip bash yang sangat bergantung pada variabel lingkungan. Beberapa di antaranya misalnya DE tidak disetel jika Anda tidak masuk ke sesi. Lihat sendiri$ less $(which xdg-mime)
ManuelSchneid3r
10

versi file <5: file -i -b / path / to / file
file version> = 5: file --mime-type -b / path / to / file

Andrey
sumber
1
apa yang Anda maksud dengan versi file?
pengguna2867106
1
@ user2867106 Saya rasa yang dia maksud adalah versi dari perintah file.
jgh fun-run
4

Coba fileperintah dengan-i opsi.

-ioption Menyebabkan perintah file untuk mengeluarkan string jenis mime daripada yang lebih tradisional yang bisa dibaca manusia. Jadi mungkin dikatakan text/plain; charset=us-asciidaripada ASCII text.

codaddict
sumber
2

file --mime berfungsi, tetapi tidak --mime-type. setidaknya untuk RHEL 5 saya.

fanchyna
sumber