2014-07-09 21 views
6

के साथ एमआईएमई प्रकार निर्धारित करने के लिए फ़ाइल सामग्री का उपयोग करें यह node.js के लिए सभी लोकप्रिय एमआईएम प्रकार पुस्तकालयों को लगता है, बस फ़ाइल नाम एक्सटेंशन का उपयोग करें ताकि फ़ाइल को एमआईएमई प्रकार निर्धारित करने के लिए उपयोग किया जा सके।नोड जेएस

क्या फ़ाइल में कूदने के लिए नोड का उपयोग करने का कोई अच्छा तरीका है और विस्तार के मामले में फ़ाइल के एमआईएमई प्रकार को समझदारी से निर्धारित करना है?

उत्तर

7

यह वास्तव में एक दयालुता की तरह लगता है, कि सबसे लोकप्रिय MIME मॉड्यूल बस प्रकार के विस्तार को मैप कर रहे हैं।

गहराई से खोज करने के बाद, मुझे mmmagic नामक मॉड्यूल मिला, ऐसा लगता है कि आप वही कर रहे हैं जो आप चाहते हैं।

, ध्यान रखें कि माइम साथ काम करने से मैं एक स्वाद के साथ छोड़ दिया गया था, कि माइम का पता लगाने पूरी तरह से विश्वसनीय नहीं सिद्धांत रूप में है, और झूठी detections की एक दुर्लभ मौका है।

उपयोग के उदाहरण (their साइट से लिया गया):

var mmm = require('mmmagic'), 
     Magic = mmm.Magic; 

    var magic = new Magic(mmm.MAGIC_MIME_TYPE); 
    magic.detectFile('node_modules/mmmagic/build/Release/magic.node', function(err, result) { 
     if (err) throw err; 
     console.log(result); 
     // output on Windows with 32-bit node: 
     // application/x-dosexec 
    }); 
3

माइम के बाद से सब पर फ़ाइल सामग्री स्वरूप के बारे में कुछ भी तय नहीं होता, आप केवल अनुमान लगाना क्या एक फ़ाइल में चल रहा है heuristics रोजगार कर सकते हैं:

  1. कुछ बाइनरी प्रारूपों में कुछ जादू संख्या कहा जाता है, लेकिन वे गलत या संदिग्ध हो सकते हैं। अधिक जानकारी के लिए See this wikipedia article

  2. कई टेक्स्ट फ़ाइल स्वरूपों में व्याकरण संरचनाएं होती हैं जिनका उपयोग आप एक साधारण पैटर्न मिलान परीक्षण के लिए कर सकते हैं। जैसे xml, csv या json। हालांकि कुछ प्रारूप (उदा। HTML), इसकी बजाय "विकसित" वाक्यविन्यास परिभाषा है जो इसे संदिग्ध बनाती है और इस प्रकार पैटर्न मिलान के लिए कठिन होती है।

बेहतर अस्पष्टता के मुद्दे को वर्णन करने के लिए, यहाँ एक उदाहरण है: ब्राउज़र एक बहुत ही बहुत ही उच्च सहिष्णुता का विकास किया है, और कुछ भी है कि दूर से HTML जैसा दिखता है इस प्रकार एक HTML (या यहां तक ​​XHTML) फ़ाइल स्वरूप की पहचान करना मुश्किल है स्वीकार कर लिया है । इस तथ्य का जिक्र नहीं है कि HTML फाइलें वास्तव में गैर-HTML टेम्पलेट भाषाएं (जैसे jade, handlebars, angular टेम्पलेट इत्यादि ...) हो सकती हैं। यह केवल कई उदाहरणों में से एक है जहां चीजें बहुत संदिग्ध होती हैं।