Bir dosyanın MIME türünü (İçerik Türü) nasıl öğrenebilirim?


108

Linux bash betiğindeki bir dosyanın MIME türünü (veya "İçerik Türü" olarak adlandırılır mı?) Bulmanın bir yolu var mı?

İhtiyaç duymamın nedeni, ImageShack'in bir dosya yüklemeye ihtiyaç duyuyor gibi görünmesidir, çünkü bazı nedenlerden dolayı .png dosyasını bir application/octet-streamdosya olarak algılar .

Dosyayı kontrol ettim ve bu gerçekten bir PNG resmi:

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

Bu bana şu hatayı veriyor:

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

Bu çalışıyor, ancak bir MIME-TÜRÜ belirtmem gerekiyor.

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

Yanıtlar:


229

Kullanın file. Örnekler:

> 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

Pencerelerin altında Git bash'ı kullanırsanız, hayır.
tivo

1
Sadece mime türünü elde etmek için şunları yapabilirsiniz:file --mime-type FILE_NAME | awk '{print $2}'
Justin Jenkins

23
@JustinJenkins -b dosya adını çıkarır, bu nedenle file -b --mime-type FILE_NAMEyalnızca mime türünü döndürür
jaygooby

orkmimetypefinder filename
bitek

Tanımadığı application/xmlveyatext/xml
Tseng

24

kullanabileceğiniz diğer araçlardan biri (dosyanın yanı sıra) xdg-mime

Örneğin xdg-mime query filetype <file>

eğer nefis varsa

yum install xdg-utils.noarch

Bir Subrip (altyazı) dosyasındaki xdg-mime ve dosyanın bir örnek karşılaştırması

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

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

yukarıdaki dosyada bunu yalnızca düz metin olarak gösterin.


xdg-mime sorgu dosya türü install.sql; xprop: ekran açılamıyor ''
bir kodlayıcı

xdg-mime bir bash betiğidir ve büyük ölçüde ortam değişkenlerine dayanır. Bir oturumda oturum açmadıysanız, bazıları örneğin DE ayarlanmamıştır. Kendiniz kontrol edin$ less $(which xdg-mime)
ManuelSchneid3r

10

dosya sürümü <5: dosya -i -b / yol / dosya /
dosya sürümü> = 5: dosya --mime-tip -b / yol / / dosya


1
dosya sürümü ile ne demek istiyorsun?
user2867106

1
@ user2867106 Dosya komutunun versiyonunu kastettiğini düşünüyorum.
jgh fun-run

4

fileKomutu -iseçeneğiyle deneyin .

-iseçenek, dosya komutunun daha geleneksel insan tarafından okunabilen dizeler yerine mime türü dizeler üretmesine neden olur. Böylece text/plain; charset=us-asciidaha çok söyleyebilir ASCII text.


2

dosya --mime çalışır, ancak --mime-type çalışmaz. en azından RHEL 5'im için.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.