जिस तरह से मैंने इसे किया है, वह ज्ञात एक्सटेंशन और उनके माइम प्रकारों की एक सूची रखते हुए है, और यदि एक्सटेंशन नहीं मिला है तो बस इसे application/octet-stream
के रूप में वापस कर दें। इसका कारण यह है कि यह माइम प्रकार अनुप्रयोगों (उदा।, Exe) पर लागू होता है जो ब्राउज़र सेटिंग्स, सुरक्षा सेटिंग्स के आधार पर, आपको ऑपरेटिंग सिस्टम को पास करने की अनुमति दे सकता है, इस प्रकार उस फ़ाइल प्रकार के लिए डिफ़ॉल्ट संपादक खोल सकता है। बीटीडब्ल्यू, हर प्रकार की फाइल के लिए सुरक्षा निहितार्थों पर विचार करें जिन्हें आप स्वीकार कर सकते हैं और उपयोगकर्ताओं को स्थानांतरित कर सकते हैं।
<MimeTypes>
<MimeType Type="application/mac-binhex40" Extensions=".hqx"/>
<MimeType Type="application/msword" Extensions=".doc;.docx"/>
<MimeType Type="application/pdf" Extensions=".pdf"/>
<MimeType Type="application/postscript" Extensions=".ai;.eps;.ps"/>
<MimeType Type="application/rtf" Extensions=".rtf"/>
<MimeType Type="application/vnd.ms-excel"
Extensions=".xla;.xlc;.xlm;.xls;.xlt;.xlw;.xlsx"/>
<MimeType Type="application/vnd.ms-outlook" Extensions=".msg"/>
<MimeType Type="application/vnd.ms-powerpoint"
Extensions=".pot;.pps;.ppt;.pptx"/>
<MimeType Type="application/vnd.ms-works" Extensions=".wcm;.wdb;.wks;.wps"/>
<MimeType Type="application/x-compress" Extensions=".z"/>
<MimeType Type="application/x-compressed" Extensions=".tgz"/>
<MimeType Type="application/x-gzip" Extensions=".gz"/>
<MimeType Type="application/x-msaccess" Extensions=".mdb"/>
<MimeType Type="application/x-msmetafile" Extensions=".wmf"/>
<MimeType Type="application/x-mspublisher" Extensions=".pub"/>
<MimeType Type="application/x-msschedule" Extensions=".scd"/>
<MimeType Type="application/x-msterminal" Extensions=".trm"/>
<MimeType Type="application/x-mswrite" Extensions=".wri"/>
<MimeType Type="application/x-tar" Extensions=".tar"/>
<MimeType Type="application/zip" Extensions=".zip"/>
<MimeType Type="audio/basic" Extensions=".au;.snd"/>
<MimeType Type="audio/mid" Extensions=".mid;.rmi"/>
<MimeType Type="audio/mpeg" Extensions=".mp3"/>
<MimeType Type="audio/x-aiff" Extensions=".aif;.aifc;.aiff"/>
<MimeType Type="audio/x-pn-realaudio" Extensions=".ra;.ram"/>
<MimeType Type="audio/x-wav" Extensions=".wav"/>
<MimeType Type="image/bmp" Extensions=".bmp"/>
<MimeType Type="image/gif" Extensions=".gif"/>
<MimeType Type="image/jpeg" Extensions=".jpe;.jpeg;.jpg"/>
<MimeType Type="image/pipeg" Extensions=".jfif"/>
<MimeType Type="image/tiff" Extensions=".tif;.tiff"/>
<!--Substitute the following two for text/plain if you're sure bad html
won't get rendered in the browser-->
<!--<MimeType Type="text/html" Extensions=".mht;.html;.htm"/>-->
<!--<MimeType Type="text/plain" Extensions=".txt"/>-->
<MimeType Type="text/plain" Extensions=".txt;.html;.htm"/>
<MimeType Type="text/richtext" Extensions=".rtx"/>
<MimeType Type="text/tab-separated-values" Extensions=".tsv"/>
<MimeType Type="video/mpeg" Extensions=".mp2;.mpa;.mpe;.mpeg;.mpg;.mpv2"/>
<MimeType Type="video/quicktime" Extensions=".mov;.qt"/>
<MimeType Type="video/x-la-asf" Extensions=".lsf;.lsx;.asf;.asr;.asx;"/>
<MimeType Type="video/x-msvideo" Extensions=".avi"/>
</MimeTypes>
यहां इस (ग # स्यूडोकोड की तरह) का उपयोग करने का एक उदाहरण है:
यहाँ सूची मैं आम तौर पर उपयोग करते हैं।
public string GetMimeType(string ext)
{
// who would load the file on every method call? That's just dumb
var mimes = XElement.Load("MyMimeTypesLolKThx.xml");
var result = from x in mimes.Elements()
where Contains(x, ext)
select x.Attribute("Type");
return result.FirstOrDefault() ?? "application/octet-stream";
}
public bool Contains(XElement el, string ext)
{
return el.Attribute("Extensions").Value.Contains(ext);
}
@Will, क्या आप इस नियंत्रक में कोड का टुकड़ा दिखा सकते हैं जो इस सूची को पार करता है और उपयुक्त माइम-प्रकार खींचता है? आपके उत्तर के लिए बहुत बहुत धन्यवाद! – Godel
क्षमा करें, नहीं कर सकते। यह सभी सार्वजनिक सूचना है (मैंने इसे विकिपीडिया और अन्य स्रोतों से हटा दिया है) लेकिन जिस कोड को मैं इसे पार करने के लिए उपयोग करता हूं वह खुला स्रोत नहीं है। इसके अलावा, इसकी 2.0 विन्यास सामग्री, जो काफी भारी वजन है। हालांकि, मैं आपको यह कैसे करना है इसका एक नमूना दूंगा। – Will
@ इस समाधान के लिए धन्यवाद। आपका उत्तर लगभग 2 साल पुराना है। क्या यह अभी भी आपका पसंदीदा समाधान है? – gsharp