2010-01-05 11 views
5

मेरा एएसपी.नेट एमवीसी एप्लिकेशन में अनुलग्नक वाले पृष्ठ हैं और ये अनुलग्नक कई अलग-अलग फ़ाइल प्रकारों के हो सकते हैं।एमआईएमई प्रकार को जानने के बिना मैं एएसपी.नेट में फाइलरसेट कैसे लौटा सकता हूं?

जब उपयोगकर्ता अपने अनुलग्नक तक पहुंचना चाहता है, तो मुझे फ़ाइल रीसेट को बंद करने और फ़ाइल संलग्नक को वापस करने की आवश्यकता है जिसके पास मेरे पास पथ है।

हालांकि, मेरे पास माइम-प्रकार का कोई डेटाबेस नहीं है, और न ही मुझे इन फ़ाइलों के हाथों के प्रकार के बारे में पता है।

इसे संभालने का उचित तरीका क्या है? क्या कोई तरीका है कि मैं एक फाइल वापस कर सकता हूं और ढांचे को मिमटाइप को समझने का प्रयास कर सकता हूं?

कोई सुझाव?

उत्तर

9

जिस तरह से मैंने इसे किया है, वह ज्ञात एक्सटेंशन और उनके माइम प्रकारों की एक सूची रखते हुए है, और यदि एक्सटेंशन नहीं मिला है तो बस इसे 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); 
} 
+0

@Will, क्या आप इस नियंत्रक में कोड का टुकड़ा दिखा सकते हैं जो इस सूची को पार करता है और उपयुक्त माइम-प्रकार खींचता है? आपके उत्तर के लिए बहुत बहुत धन्यवाद! – Godel

+0

क्षमा करें, नहीं कर सकते। यह सभी सार्वजनिक सूचना है (मैंने इसे विकिपीडिया और अन्य स्रोतों से हटा दिया है) लेकिन जिस कोड को मैं इसे पार करने के लिए उपयोग करता हूं वह खुला स्रोत नहीं है। इसके अलावा, इसकी 2.0 विन्यास सामग्री, जो काफी भारी वजन है। हालांकि, मैं आपको यह कैसे करना है इसका एक नमूना दूंगा। – Will

+0

@ इस समाधान के लिए धन्यवाद। आपका उत्तर लगभग 2 साल पुराना है। क्या यह अभी भी आपका पसंदीदा समाधान है? – gsharp

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

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