ब्राउज़र द्वारा भेजे गए मूल्य को अनदेखा करें। यह वास्तव में क्लाइंट प्लेटफ़ॉर्म, ब्राउज़र और कॉन्फ़िगरेशन पर निर्भर है।
यदि आप फ़ाइल एक्सटेंशन के आधार पर सामग्री प्रकारों पर पूर्ण नियंत्रण चाहते हैं, तो बेहतर ढंग से ServletContext#getMimeType()
का उपयोग करके इसे स्वयं निर्धारित करें।
String mimeType = servletContext.getMimeType(filename);
डिफ़ॉल्ट माइम प्रकार प्रश्न में servletcontainer की web.xml
में definied कर रहे हैं। उदाहरण के लिए टोमकैट, यह /conf/web.xml
में स्थित है। आप विस्तार/वेब ऐप्लिकेशन की /WEB-INF/web.xml
में यह ओवरराइड कर सकते हैं इस प्रकार है:
<mime-mapping>
<extension>xlsx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
</mime-mapping>
तुम भी माइम वास्तविक फ़ाइल सामग्री के आधार पर प्रकार का निर्धारण कर सकते हैं (क्योंकि फाइल एक्सटेंशन से प्रति सही नहीं हो सकता है, यह द्वारा मूर्ख बनाया जा सकता ग्राहक), लेकिन यह बहुत काम है। सभी काम करने के लिए किसी तृतीय पक्ष लाइब्रेरी का उपयोग करने पर विचार करें। मुझे JMimeMagic इस के लिए उपयोगी मिला है।
String mimeType = Magic.getMagicMatch(file, false).getMimeType();
ध्यान दें कि यह विश्वसनीय के रूप में सभी Mimetypes का समर्थन नहीं करता: इस प्रकार आप इसे उपयोग कर सकते हैं। आप दोनों दृष्टिकोणों के संयोजन पर भी विचार कर सकते हैं। जैसे अगर कोई शून्य या application/octet-stream
देता है, तो दूसरे का उपयोग करें। या यदि दोनों एक अलग लेकिन "मान्य" mimetype देता है, तो JMimeMagic द्वारा लौटाया गया पसंद करते हैं।
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
या यदि आप पहले से ही JSF 2.x उपयोग करने के लिए होता है, ExternalContext#getMimeType()
बजाय का उपयोग करें:
ओह, मैं लगभग, जोड़ने के लिए JSF में आप ServletContext
प्राप्त कर सकते हैं के रूप में इस भूल गया।
हम्म ... मैं फ़ायरफ़ॉक्स को एक खराब MIME प्रकार का उपयोग नहीं कर सकता, भले ही मैं अपने सिस्टम mime.types फ़ाइल को गड़बड़ कर दूं, इसलिए मुझे यकीन नहीं है कि ब्राउज़र-सामग्री शीर्षलेख को पास करने के लिए ब्राउज़र क्या कर सकता है। – Pointy
@ पॉइंट: दुर्भाग्य से केवल एफएफ की तुलना में दुनिया में अधिक ब्राउज़र हैं। उदाहरण के लिए रेडमंड में एक टीम (खांसी) द्वारा विकसित की गई। – BalusC
हां बिल्कुल - अजीब रूप से पर्याप्त है कि मैं उम्मीद करता हूं कि आईईई एमआईएम प्रकार गलत हो, लेकिन इस तरह से नहीं। (मैं उम्मीद करता हूं कि यह एक जेपीईजी फ़ाइल के लिए "एप्लिकेशन/पीडीएफ" प्रदान करेगी जिसका नाम "bogus.pdf" होता है, उदाहरण के लिए।) – Pointy