ฉันจะค้นหาประเภท MIME (Content-Type) ของไฟล์ได้อย่างไร


109

มีวิธีค้นหาประเภท MIME (หรือเรียกว่า "Content-Type"?) ของไฟล์ในสคริปต์ทุบตีของ Linux หรือไม่

เหตุผลที่ฉันต้องการก็เพราะว่า ImageShack ดูเหมือนจะต้องใช้เพื่ออัปโหลดไฟล์เนื่องจากเหตุผลบางประการมันตรวจพบไฟล์. png เป็นapplication/octet-streamไฟล์

ฉันตรวจสอบไฟล์แล้วและเป็นภาพ PNG จริงๆ:

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

สิ่งนี้ทำให้ฉันมีข้อผิดพลาด:

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

ใช้งานได้ แต่ฉันต้องระบุ MIME-TYPE

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

คำตอบ:


232

ใช้file. ตัวอย่าง:

> 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

ไม่ใช่ถ้าคุณใช้ Git bash ใต้ windows
tivo

1
หากต้องการรับเพียงประเภทละครใบ้คุณสามารถทำได้:file --mime-type FILE_NAME | awk '{print $2}'
Justin Jenkins

23
@JustinJenkins -b ละชื่อไฟล์ดังนั้นจึงfile -b --mime-type FILE_NAMEส่งคืนเฉพาะประเภท mime
jaygooby

หรือkmimetypefinder filename
bitek

ไม่รู้จักapplication/xmlหรือtext/xml
Tseng

25

หนึ่งในเครื่องมืออื่น ๆ (นอกเหนือจากไฟล์) ที่คุณสามารถใช้ได้คือ xdg-mime

เช่น xdg-mime query filetype <file>

ถ้าคุณมียำ

yum install xdg-utils.noarch

ตัวอย่างการเปรียบเทียบ xdg-mime และไฟล์บนไฟล์ Subrip (คำบรรยาย)

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

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

ในไฟล์ด้านบนจะแสดงเป็นข้อความธรรมดาเท่านั้น


xdg-mime query filetype install.sql; xprop: ไม่สามารถเปิดการแสดงผล ''
coder

xdg-mime เป็นสคริปต์ทุบตีที่อาศัยตัวแปรสภาพแวดล้อมเป็นอย่างมาก บางส่วนเช่น DE จะไม่ถูกตั้งค่าหากคุณไม่ได้เข้าสู่เซสชัน ตรวจสอบด้วยตัวคุณเอง$ less $(which xdg-mime)
ManuelSchneid3r

10

เวอร์ชันไฟล์ <5: file -i -b / path / to / file
file version> = 5: file --mime-type -b / path / to / file


1
คุณหมายถึงอะไรตามเวอร์ชันของไฟล์
user2867106

1
@ user2867106 ฉันคิดว่าเขาหมายถึงเวอร์ชันของคำสั่งไฟล์
jgh fun-run

4

ลองใช้fileคำสั่งพร้อม-iตัวเลือก

-ioption ทำให้คำสั่ง file ส่งออกสตริงชนิด mime แทนที่จะเป็นแบบดั้งเดิมที่มนุษย์สามารถอ่านได้ ดังนั้นจึงอาจกล่าวได้มากกว่าtext/plain; charset=us-asciiASCII text


2

ไฟล์ - ภาพเคลื่อนไหวใช้งานได้ แต่ไม่ใช่ - ประเภทเวลา อย่างน้อยก็สำหรับ RHEL 5 ของฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.