2010-03-10 16 views
9

मेरी रेल एप्लिकेशन में साथ MIME प्रकार मुद्दों:रेल: मैं बहुत की तरह एक फ़ाइल के MIME प्रकार प्राप्त करने के लिए कोशिश कर रहा हूँ .m4v फ़ाइलों

MIME::Types.type_for("example.m4v").to_s 

लेकिन यह पहचान नहीं कर रहा है।

मैं config/initializers/mime_types.rb में निम्नलिखित को जोड़ की कोशिश की (और सर्वर को पुनः आरंभ) किसी भी भाग्य के बिना:

Mime::Type.register "video/mp4", :m4v

+0

क्या 'में पहचान नहीं कर रहा है करता it' का मतलब परीक्षण कर सकते हैं? –

+0

मतलब कुछ भी वापस नहीं किया जाता है जब मैं उपरोक्त मेरे उदाहरण में 'type_for' करता हूं। अन्य एक्सटेंशन (.mov, .mp3, आदि) प्रकार ठीक ठीक करते हैं। – Shpigford

+0

क्या आपको यकीन है कि माइम-टाइप आपके ब्राउज़र द्वारा भेजा जाता है? क्योंकि अगर यह आपके ब्राउज़र द्वारा नहीं भेजा जाता है, तो आप इसे अपने रेल एपीपी – shingara

उत्तर

8

आप अपने config/initializers/mime_types.rb फाइल करने के लिए निम्नलिखित लाइनों को जोड़ने की आवश्यकता:

# register MIME type with Rails 
Mime::Type.register "video/mp4", :m4v 

# register MIME type with MIME::Type gem 
MIME::Types.add(MIME::Type.from_array("video/mp4", %(m4v))) 

अब कंसोल में आप परिणाम

MIME::Types.type_for("abc.m4v").to_s 
#=> "video/mp4" 
+0

बिल्कुल सही! धन्यवाद! – Shpigford

+0

एक समस्या ... जब मैं अपना सर्वर शुरू करता हूं तो अब मुझे यह मिल रहा है: 'वीडियो/एमपी 4 के रूप में पहले से पंजीकृत वीडियो/एमपी 4 टाइप करें – Shpigford

+0

@Shpigford - क्या आपने कभी यह पता लगाया है कि उस संदेश को दबाने के लिए कैसे? –

0

तो मुझे लगता है वहाँ माइम :: प्रकार और माइम :: प्रकार जो प्रत्येक से बिल्कुल अलग होते अन्य। ध्यान दें कि यह "माइम" बनाम "एमआईएमई" है।

उदाहरण के लिए,

MIME::Types.type_for("foo.json") 

रिटर्न

[#<MIME::Type:0x1038b3108 @system=nil, @encoding="8bit", @simplified="application/json", @sub_type="json", @registered=true, @url=["IANA", "RFC4627"], @docs=nil, @obsolete=nil, @extensions=["json"], @raw_sub_type="json", @media_type="application", @raw_media_type="application", @content_type="application/json">] 

फिर भी,

Mime::Type.lookup_by_extension("json") 

रिटर्न

#<Mime::Type:0x1051c4d40 @symbol=:json, @string="text/x-json", @synonyms=[]> 

तो यह लगता है कि आप एक प्रकार जोड़ना चाहते हैं ताकि जब type_for आप उपयोग कर सकते हैं का उपयोग कर दिया जाता है जैसे निम्नलिखित:

>> t = MIME::Type.from_array('video/mp4', %w(m4v)) 
=> #<MIME::Type:0x1055de3b8 @system=nil, @encoding="base64", @simplified="video/mp4", @sub_type="mp4", @registered=true, @url=nil, @docs=nil, @obsolete=nil, @extensions=["m4v"], @raw_sub_type="mp4", @media_type="video", @raw_media_type="video", @content_type="video/mp4"> 
>> MIME::Types.add(t) 
Type video/mp4 already registered as a variant of video/mp4. 
=> [#<MIME::Type:0x1055de3b8 @system=nil, @encoding="base64", @simplified="video/mp4", @sub_type="mp4", @registered=true, @url=nil, @docs=nil, @obsolete=nil, @extensions=["m4v"], @raw_sub_type="mp4", @media_type="video", @raw_media_type="video", @content_type="video/mp4">] 
>> MIME::Types.type_for("example.m4v") 
=> [#<MIME::Type:0x1055de3b8 @system=nil, @encoding="base64", @simplified="video/mp4", @sub_type="mp4", @registered=true, @url=nil, @docs=nil, @obsolete=nil, @extensions=["m4v"], @raw_sub_type="mp4", @media_type="video", @raw_media_type="video", @content_type="video/mp4">] 
>> 

चेतावनी जब ऐड कहा जाता है एक छोटे से विषय में तो आप शायद यह पता लगाने कैसे करना चाहिए अपने वीडियो को "वीडियो/एमपी 4" प्रकार में जोड़ने के लिए। अधिक जानकारी के लिए MIME::Types और MIME::Type के लिए प्रलेखन देखें।

+0

लेकिन यहां सवाल यह है कि मैं एक कस्टम एमआईएम प्रकार कैसे जोड़ सकता हूं ताकि एमएमवी एक्सटेंशन पहचाना जा सके (मेरे मूल उदाहरण के अनुसार)। – Shpigford

+0

मैंने कस्टम एमआईएम प्रकार को जोड़ने के तरीके पर कुछ कोड शामिल करने के लिए अपना उत्तर अपडेट किया। मैं इस क्षेत्र में एक विशेषज्ञ नहीं हूं लेकिन उम्मीद है कि इससे मदद मिलती है। –

संबंधित मुद्दे

 संबंधित मुद्दे