मैं किसी फ़ाइल के MIME प्रकार (सामग्री-प्रकार) का पता कैसे लगा सकता हूं?


107

लिनक्स बैश स्क्रिप्ट में फ़ाइल के MIME प्रकार (या इसे "सामग्री-प्रकार" कहा जाता है?) का पता लगाने का एक तरीका है?

मुझे इसकी आवश्यकता है क्योंकि ImageShack को फ़ाइल अपलोड करने के लिए इसकी आवश्यकता प्रतीत होती है, क्योंकि किसी कारण से यह एक application/octet-streamफ़ाइल के रूप में .png फ़ाइल का पता लगाता है ।

मैंने फ़ाइल की जाँच की है, और यह वास्तव में 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

जवाबों:


228

का उपयोग करें 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

नहीं अगर आप खिड़कियों के नीचे गिट बैश का उपयोग करते हैं।
tivo

1
केवल माइम-प्रकार पाने के लिए आप कर सकते हैं:file --mime-type FILE_NAME | awk '{print $2}'
जस्टिन जेनकिंस

23
@JustinJenkins -b फ़ाइल नाम को छोड़ देता है इसलिए file -b --mime-type FILE_NAMEसिर्फ माइम प्रकार लौटाता है
jaygooby

याkmimetypefinder filename
12

नहीं पहचानता है application/xmlयाtext/xml
Tseng

24

अन्य उपकरण में से एक (फ़ाइल के अलावा) जिसका आप उपयोग कर सकते हैं xdg-mime

जैसे xdg-mime query filetype <file>

अगर आपके पास yum है,

yum install xdg-utils.noarch

Subdrip (उपशीर्षक) फ़ाइल पर xdg-mime और फ़ाइल की तुलना का एक उदाहरण

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

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

उपरोक्त फ़ाइल में केवल इसे सादे पाठ के रूप में दिखाया गया है।


xdg-mime क्वेरी फ़िलेपाइप install.sql; xprop: प्रदर्शन को खोलने में असमर्थ ''
एक कोडर

xdg-mime एक बैश स्क्रिप्ट है जो पर्यावरण चर पर बहुत निर्भर करती है। यदि आप सत्र में लॉग इन नहीं हैं, तो उनमें से कुछ डीई सेट नहीं हैं। इसे स्वयं देखें$ less $(which xdg-mime)
ManuelSchneid3r

10

फ़ाइल संस्करण <5: file -i -b / path / to / file
फ़ाइल संस्करण> = 5: फ़ाइल --mime-type -b / path / to / फ़ाइल


1
आप फ़ाइल संस्करण का क्या मतलब है?
user2867106

1
@ user2867106 मुझे लगता है कि वह फ़ाइल कमांड के संस्करण का मतलब है।
मग

4

विकल्प के fileसाथ कमांड का प्रयास करें -i

-iविकल्प अधिक पारंपरिक मानव पठनीय लोगों के बजाय माइम प्रकार के तारों को आउटपुट करने के लिए फ़ाइल कमांड का कारण बनता है। इस प्रकार यह text/plain; charset=us-asciiबजाय कह सकता है ASCII text


2

फ़ाइल - काम करता है, लेकिन नहीं - प्रकार। कम से कम मेरे RHEL 5 के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.