क्या कोई ऐसा फ़ंक्शन है जो फ़ाइल एक्सटेंशन के आधार पर सामग्री प्रकार लौटाता है?एक्सटेंशन द्वारा विस्तार प्रकार
उत्तर
मुझे नहीं पता कि। लेकिन आप इस कोड का उपयोग कर सकते हैं:
using Microsoft.Win32;
RegistryKey key = Registry.ClassesRoot.OpenSubKey(extension);
string contentType = key.GetValue("Content Type").ToString();
आपको त्रुटि प्रबंधन के लिए अतिरिक्त कोड जोड़ना होगा।
नोट: एक्सटेंशन को .txt
में जैसे डॉट द्वारा पूर्ववर्ती करने की आवश्यकता है।
क्या दूसरी दिशा जाने का कोई तरीका है? मेरे पास सामग्री प्रकार हैं और मैं उचित एक्सटेंशन के साथ सामग्री को कैश करना चाहता हूं। – Jordan
@ जोर्डन: मेरा सुझाव है कि आप इसके साथ एक प्रश्न बनाएं। लोग वहां जवाब देंगे। – CesarGon
@cesargon क्या ब्राउज़र को किसी भी फ़ाइल को डाउनलोड करना संभव है जिसका नाम और एक्सटेंशन क्वेरीस्ट्रिंग के माध्यम से पारित हो। अगर आप इसका उत्तर दे सकते हैं तो कृपया मेरा प्रश्न देखें। http://stackoverflow.com/questions/9927339 –
FYKI, \ HKEY_CLASSES_ROOT \ MIME \ डेटाबेस \ सामग्री प्रकार के अंतर्गत रजिस्ट्री की जांच करें। सामग्री प्रकार और फ़ाइल एक्सटेंशन की सूची होगी। यदि आप विंडोज़ एपीआई के माध्यम से यह जानकारी लोड कर सकते हैं तो आप सामग्री प्रकार मैपिंग में अपना फ़ाइल एक्सटेंशन प्राप्त कर सकते हैं।
hth
अद्यतन: [स्रोत] [1]
public string GetMIMEType(string filepath)
{
FileInfo fileInfo = new FileInfo(filepath);
string fileExtension = fileInfo.Extension.ToLower();
// direct mapping which is fast and ensures these extensions are found
switch (fileExtension)
{
case "htm":
case "html":
return "text/html";
case "js":
return "text/javascript"; // registry may return "application/x-javascript"
}
// see if we can find extension info anywhere in the registry
//Note : there is not a ContentType key under ALL the file types , check Run --> regedit , then extensions !!!
RegistryPermission regPerm = new RegistryPermission(RegistryPermissionAccess.Read, @"\\HKEY_CLASSES_ROOT");
// looks for extension with a content type
RegistryKey rkContentTypes = Registry.ClassesRoot.OpenSubKey(fileExtension);
if (rkContentTypes != null)
{
object key = rkContentTypes.GetValue("Content Type");
if (key != null)
return key.ToString().ToLower();
}
// looks for a content type with extension
// Note : This would be problem if multiple extensions associate with one content type.
RegistryKey typeKey = Registry.ClassesRoot.OpenSubKey(@"MIME\Database\Content Type");
foreach (string keyname in typeKey.GetSubKeyNames())
{
RegistryKey curKey = typeKey.OpenSubKey(keyname);
if (curKey != null)
{
object extension = curKey.GetValue("Extension");
if (extension != null)
{
if (extension.ToString().ToLower() == fileExtension)
{
return keyname;
}
}
}
}
return null;
}
[1]: एक http://www.codeproject.com/KB/dotnet/ContentType.aspx?msg=2903389#xx2903389xxenter code here
मुझे लगता है कि mrblah विस्तार से सामग्री प्रकार ढूंढना चाहता है, न कि दूसरी तरफ। MIME डेटाबेस reg कुंजी में देखकर किसी दिए गए सामग्री प्रकार के लिए फ़ाइल एक्सटेंशन ढूंढना उपयोगी होगा। – CesarGon
हाँ, आप सही हैं, मुझे लगता है, आपकी विधि \ HKEY_CLASSES_ROOT में दिखाई देगी। इसमें सामग्री प्रकार मैपिंग का विस्तार है। मेरे दृष्टिकोण का उपयोग करके आप मूल्य प्राप्त कर सकते हैं लेकिन यदि एकाधिक एक्सटेंशन एक सामग्री प्रकार से संबद्ध होते हैं तो यह समस्या होगी। – nayakam
क्या ब्राउजर को ऐसी फ़ाइल डाउनलोड करने देना संभव है जिसका नाम और एक्सटेंशन क्वेरीस्ट्रिंग के माध्यम से पारित हो। अगर आप इसका उत्तर दे सकते हैं तो कृपया मेरा प्रश्न देखें। http://stackoverflow.com/questions/9927339 –
यहाँ है मैं ने लिखा है:
public string GetContentTypeByExtension(string strExtension)
{
switch (strExtension)
{
case ".fif":
return "application/fractals";
break;
case ".hta":
return "application/hta";
break;
case ".hqx":
return "application/mac-binhex40";
break;
case ".vsi":
return "application/ms-vsi";
break;
case ".p10":
return "application/pkcs10";
break;
case ".p7m":
return "application/pkcs7-mime";
break;
case ".p7s":
return "application/pkcs7-signature";
break;
case ".cer":
return "application/pkix-cert";
break;
case ".crl":
return "application/pkix-crl";
break;
case ".ps":
return "application/postscript";
break;
case ".setpay":
return "application/set-payment-initiation";
break;
case ".setreg":
return "application/set-registration-initiation";
break;
case ".sst":
return "application/vnd.ms-pki.certstore";
break;
case ".pko":
return "application/vnd.ms-pki.pko";
break;
case ".cat":
return "application/vnd.ms-pki.seccat";
break;
case ".stl":
return "application/vnd.ms-pki.stl";
break;
case ".wpl":
return "application/vnd.ms-wpl";
break;
case ".xps":
return "application/vnd.ms-xpsdocument";
break;
case ".z":
return "application/x-compress";
break;
case ".tgz":
return "application/x-compressed";
break;
case ".gz":
return "application/x-gzip";
break;
case ".ins":
return "application/x-internet-signup";
break;
case ".iii":
return "application/x-iphone";
break;
case ".jtx":
return "application/x-jtx+xps";
break;
case ".latex":
return "application/x-latex";
break;
case ".nix":
return "application/x-mix-transfer";
break;
case ".asx":
return "application/x-mplayer2";
break;
case ".application":
return "application/x-ms-application";
break;
case ".wmd":
return "application/x-ms-wmd";
break;
case ".wmz":
return "application/x-ms-wmz";
break;
case ".xbap":
return "application/x-ms-xbap";
break;
case ".p12":
return "application/x-pkcs12";
break;
case ".p7b":
return "application/x-pkcs7-certificates";
break;
case ".p7r":
return "application/x-pkcs7-certreqresp";
break;
case ".sit":
return "application/x-stuffit";
break;
case ".tar":
return "application/x-tar";
break;
case ".man":
return "application/x-troff-man";
break;
case ".cer":
return "application/x-x509-ca-cert";
break;
case ".zip":
return "application/x-zip-compressed";
break;
case ".xaml":
return "application/xaml+xml";
break;
case ".xml":
return "application/xml";
break;
case ".aiff":
return "audio/aiff";
break;
case ".au":
return "audio/basic";
break;
case ".mid":
return "audio/mid";
break;
case ".mid":
return "audio/midi";
break;
case ".mp3":
return "audio/mp3";
break;
case ".mp3":
return "audio/mpeg";
break;
case ".m3u":
return "audio/mpegurl";
break;
case ".mp3":
return "audio/mpg";
break;
case ".wav":
return "audio/wav";
break;
case ".aiff":
return "audio/x-aiff";
break;
case ".mid":
return "audio/x-mid";
break;
case ".mid":
return "audio/x-midi";
break;
case ".mp3":
return "audio/x-mp3";
break;
case ".mp3":
return "audio/x-mpeg";
break;
case ".m3u":
return "audio/x-mpegurl";
break;
case ".mp3":
return "audio/x-mpg";
break;
case ".wax":
return "audio/x-ms-wax";
break;
case ".wma":
return "audio/x-ms-wma";
break;
case ".wav":
return "audio/x-wav";
break;
case ".bmp":
return "image/bmp";
break;
case ".gif":
return "image/gif";
break;
case ".jpg":
return "image/jpeg";
break;
case ".jpg":
return "image/pjpeg";
break;
case ".png":
return "image/png";
break;
case ".tiff":
return "image/tiff";
break;
case ".ico":
return "image/x-icon";
break;
case ".png":
return "image/x-png";
break;
case ".mid":
return "midi/mid";
break;
case ".dwfx":
return "model/vnd.dwfx+xps";
break;
case ".css":
return "text/css";
break;
case ".323":
return "text/h323";
break;
case ".htm":
return "text/html";
break;
case ".uls":
return "text/iuls";
break;
case ".txt":
return "text/plain";
break;
case ".wsc":
return "text/scriptlet";
break;
case ".htt":
return "text/webviewhtml";
break;
case ".htc":
return "text/x-component";
break;
case ".vcf":
return "text/x-vcard";
break;
case ".xml":
return "text/xml";
break;
case ".avi":
return "video/avi";
break;
case ".mpeg":
return "video/mpeg";
break;
case ".mpeg":
return "video/mpg";
break;
case ".avi":
return "video/msvideo";
break;
case ".mpeg":
return "video/x-mpeg";
break;
case ".mpeg":
return "video/x-mpeg2a";
break;
case ".asx":
return "video/x-ms-asf";
break;
case ".asx":
return "video/x-ms-asf-plugin";
break;
case ".wm":
return "video/x-ms-wm";
break;
case ".wmv":
return "video/x-ms-wmv";
break;
case ".wmx":
return "video/x-ms-wmx";
break;
case ".wvx":
return "video/x-ms-wvx";
break;
case ".avi":
return "video/x-msvideo";
break;
}
}
आपके पास डुप्लिकेट केस स्टेटमेंट हैं –
यदि यह एक है अपलोड की गई फाइल जब आप फ़ाइल अपलोड करते हैं तो आप बाद में उपयोग के लिए डेटाबेस के कॉलम में सामग्री प्रकार को स्टोर कर सकते हैं। HttpPostedFile क्लास के लिए ContentType नाम की एक संपत्ति है।
चूंकि .NET Framework 4.5 एक वर्ग System.Web.MimeMapping
है जिसमें अनुरोधित माइम प्रकार प्राप्त करने के तरीकों के साथ माइम प्रकारों की पूरी लाइब्रेरी है।
देखें: http://msdn.microsoft.com/en-us/library/system.web.mimemapping(v=vs.110).aspx
या GetMimeMapping
के कार्यान्वयन के लिए: https://referencesource.microsoft.com/#System.Web/MimeMapping.cs
एक कम या ज्यादा पूरी सूची के लिए नीचे दिए गए नक्शे की जांच (सी ++, फिर भी यह सीधे आगे है सी # करने के लिए इसे बदलने के लिए)।
इस प्रकार Google/क्रोम सामग्री प्रकार फॉर्म फ़ाइल विस्तार को पहचानता है (पता नहीं कैसे ईमेल बॉडी उत्पन्न होता है - क्लाइंट पक्ष पर जावास्क्रिप्ट द्वारा, या सर्वर पक्ष पर POST से - मेरा अनुमान बाद वाला है)। मुझे निम्न सूची का उपयोग करके यह सूची मिली:
इंटरनेट पर सबसे अधिक उपयोग की जाने वाली फ़ाइल सीमाओं के लिए खोजे गए। भाग्यशाली था कि एक HTML टेबल ढूंढें ताकि मैं इसे केवल सीमाओं की एक साफ सूची प्राप्त करने के लिए Excel में कॉपी-पेस्ट कर सकूं।
सामग्री के कुछ पात्रों के साथ परीक्षण एक छोटी फ़ाइल बनाई गई।
फ़ाइलों को बनाने के लिए (2) और कुछ कमांड लाइन जादू में सीमाओं की सूची का उपयोग किया गया test.TXT, test.HTM, test.TIFF और इसी तरह। लिनक्स संस्करण
for file in test.TXT test.HTM test.TIFF ... ; do cp test "$file"; done;
इन सभी फ़ाइलों को मेरे जीमेल में संलग्नक के रूप में भेजा गया है। ध्यान दें कि सुरक्षा कारणों से .exe और .zip जैसी कुछ फ़ाइलें फ़िल्टर की गई थीं। वे नीचे दिए गए कोड में गायब हैं!
जीमेल में, मूल डाउनलोड किया गया, वहां कोई भी संलग्न फाइलों के लिए
Content-Type: application/pdf; name="example.pdf"
लाइन देख सकता है। विश्लेषण किया कि वीआईएम में नीचे दी गई सूची प्राप्त करें।
आप एक extention कि नीचे दी गई सूची में नहीं है जोड़ना चाहते हैं - छोटे फ़ाइल, sample.xyz बनाने खुद के लिए भेज और के लिए सामग्री प्रकार कच्चे ईमेल को देखो। वह चाल है। आशा करता हूँ की ये काम करेगा!
पीएस मुझे पता है कि यह सबसे अच्छी सूची नहीं है, लेकिन यह सीखना मेरे लिए पर्याप्त था कि कैसे प्रोग्राम संलग्न रूप से ईमेल अनुलग्नक भेजना है और फ़ाइल एक्सटेंशन द्वारा सामग्री-प्रकार का चयन करना उतना ही अच्छा होगा जितना जीमेल करेगा। अगर कुछ एक्सटेंशन प्रकार "गायब" हैं तो कठोर न हों।
static const map<string, string> ContentTypes = {
{ "TXT","text/plain" },
{ "HTM","text/html" },
{ "TIFF","image/tiff" },
{ "TMP","application/octet-stream" },
{ "TOAST","application/octet-stream" },
{ "TORRENT","application/x-bittorrent" },
{ "TTF","application/x-font-ttf" },
{ "UUE","application/octet-stream" },
{ "VCD","application/x-cdlink" },
{ "VCF","text/x-vcard" },
{ "VCXPROJ","application/xml" },
{ "VOB","application/octet-stream" },
{ "WAV","audio/x-wav" },
{ "WMA","audio/x-ms-wma" },
{ "WMV","video/x-ms-wmv" },
{ "WPD","application/wordperfect" },
{ "WPS","application/octet-stream" },
{ "XCODEPROJ","application/octet-stream" },
{ "XHTML","application/xhtml+xml" },
{ "XLR","application/octet-stream" },
{ "XLS","application/vnd.ms-excel" },
{ "XLSX","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" },
{ "XML","text/xml" },
{ "YUV","application/octet-stream" },
{ "ZIPX","application/octet-stream" },
{ "3DM","application/octet-stream" },
{ "3DS","application/octet-stream" },
{ "3G2","video/3gpp2" },
{ "3GP","video/3gpp" },
{ "ACCDB","application/octet-stream" },
{ "AI","application/illustrator" },
{ "AIF","audio/x-aiff" },
{ "APK","application/vnd.android.package-archive" },
{ "APP","application/octet-stream" },
{ "ASF","video/x-ms-asf" },
{ "ASP","application/octet-stream" },
{ "ASPX","application/xml" },
{ "AVI","video/x-msvideo" },
{ "BAK","application/octet-stream" },
{ "BIN","application/octet-stream" },
{ "BMP","image/bmp" },
{ "C","text/x-csrc" },
{ "CAB","application/octet-stream" },
{ "CBR","application/octet-stream" },
{ "CER","application/x-x509-ca-cert" },
{ "CFG","application/octet-stream" },
{ "CFM","application/octet-stream" },
{ "CGI","application/octet-stream" },
{ "CLASS","application/octet-stream" },
{ "CPP","text/x-c++src" },
{ "CRDOWNLOAD","application/octet-stream" },
{ "CRX","application/x-chrome-extension" },
{ "CS","text/plain" },
{ "CSR","application/octet-stream" },
{ "CSS","text/css" },
{ "CSV","text/csv" },
{ "CUE","application/octet-stream" },
{ "CUR","application/octet-stream" },
{ "DAT","application/octet-stream" },
{ "DB","application/octet-stream" },
{ "DBF","application/octet-stream" },
{ "DDS","image/vnd.ms-dds" },
{ "DEB","application/x-debian-package" },
{ "DEM","application/octet-stream" },
{ "DESKTHEMEPACK","application/octet-stream" },
{ "DLL","application/octet-stream" },
{ "DMG","application/octet-stream" },
{ "DMP","application/octet-stream" },
{ "DOC","application/msword" },
{ "DOCX","application/vnd.openxmlformats-officedocument.wordprocessingml.document" },
{ "DRV","application/octet-stream" },
{ "DTD","application/xml-dtd" },
{ "DWG","application/octet-stream" },
{ "DXF","application/dxf" },
{ "EPS","application/postscript" },
{ "FLA","application/octet-stream" },
{ "FLV","video/x-flv" },
{ "FNT","application/octet-stream+fnt" },
{ "FON","application/octet-stream+fon" },
{ "GADGET","application/octet-stream" },
{ "GAM","application/octet-stream" },
{ "GED","application/octet-stream" },
{ "GIF","image/gif" },
{ "GPX","application/gpx+xml" },
{ "GZ","application/x-gzip" },
{ "H","text/x-chdr" },
{ "HQX","application/mac-binhex40" },
{ "HTML","text/html" },
{ "ICNS","application/octet-stream" },
{ "ICO","image/x-icon" },
{ "ICS","text/calendar" },
{ "IFF","application/octet-stream" },
{ "INDD","application/octet-stream" },
{ "INI","application/octet-stream" },
{ "ISO","application/octet-stream" },
{ "JAVA","application/octet-stream" },
{ "JPG","image/jpeg" },
{ "JSP","application/octet-stream" },
{ "KEY","application/octet-stream" },
{ "KEYCHAIN","application/octet-stream" },
{ "KML","application/vnd.google-earth.kml+xml" },
{ "KMZ","application/vnd.google-earth.kmz" },
{ "LOG","application/octet-stream" },
{ "LUA","application/octet-stream" },
{ "M","application/octet-stream" },
{ "M3U","audio/x-mpegurl" },
{ "M4A","audio/mp4" },
{ "M4V","video/x-m4v" },
{ "MAX","application/octet-stream" },
{ "MDB","application/octet-stream" },
{ "MDF","application/octet-stream" },
{ "MID","audio/midi" },
{ "MIM","application/octet-stream" },
{ "MOV","video/quicktime" },
{ "MP3","audio/mpeg" },
{ "MP4","video/mp4" },
{ "MPA","audio/mpeg" },
{ "MPG","video/mpeg" },
{ "MSG","application/octet-stream" },
{ "NES","application/octet-stream" },
{ "OBJ","application/octet-stream" },
{ "ODT","application/vnd.oasis.opendocument.text" },
{ "OTF","application/vnd.oasis.opendocument.formula-template" },
{ "PAGES","application/x-iwork-pages-sffpages" },
{ "PART","application/octet-stream" },
{ "PCT","application/octet-stream" },
{ "PDB","chemical/x-pdb" },
{ "PDF","application/pdf" },
{ "PHP","application/x-httpd-php" },
{ "PKG","application/octet-stream" },
{ "PL","application/octet-stream" },
{ "PLUGIN","application/octet-stream" },
{ "PNG","image/png" },
{ "PPS","application/vnd.ms-powerpoint" },
{ "PPT","application/vnd.ms-powerpoint" },
{ "PPTX","application/vnd.openxmlformats-officedocument.presentationml.presentation" },
{ "PRF","application/pics-rules" },
{ "PS","application/postscript" },
{ "PSD","application/photoshop" },
{ "PSPIMAGE","application/octet-stream" },
{ "PY","application/octet-stream" },
{ "RM","audio/x-pn-realaudio" },
{ "ROM","application/octet-stream" },
{ "RPM","application/x-rpm" },
{ "RSS","application/octet-stream" },
{ "RTF","application/rtf" },
{ "SAV","application/octet-stream" },
{ "SDF","application/octet-stream" },
{ "SH","application/x-sh" },
{ "SITX","application/octet-stream" },
{ "SLN","text/plain" },
{ "SQL","application/octet-stream" },
{ "SRT","application/octet-stream" },
{ "SVG","image/svg+xml" },
{ "SWF","application/x-shockwave-flash" },
{ "SWIFT","application/octet-stream" },
{ "TAX2016","application/octet-stream" },
{ "TEX","application/x-tex" }
};
- 1. एक कस्टम प्रकार विस्तार
- 2. पाय ++ द्वारा पाइथन एक्सटेंशन
- 3. विजुअल स्टूडियो 2010 एक्सटेंशन जो कोड विस्तार
- 4. एफ # मॉड्यूल एक्सटेंशन बनाम प्रकार प्रविष्टि
- 5. पाइथन निर्मित प्रकार के लिए एक्सटेंशन विधि!
- 6. printf प्रकार पदोन्नति और साइन एक्सटेंशन
- 7. उपयोगकर्ता द्वारा परिभाषित प्रकार
- 8. प्रकार और शून्य पर विस्तार विधि <type>
- 9. STARTTLS एक्सटेंशन सर्वर द्वारा समर्थित नहीं है
- 10. हास्केल के बीजगणितीय डेटा प्रकार: "छद्म-विस्तार"
- 11. वैराडिक टेम्पलेट्स - विस्तार के विभिन्न प्रकार
- 12. डायनामिक प्रकार की एक्सटेंशन विधि कैसे कॉल करें?
- 13. क्रोम एक्सटेंशन + डेविस + रेल ऐप - विस्तार से प्रमाणीकृत अनुरोध करना?
- 14. विस्तार विकल्प पृष्ठ से क्रोम: // क्रोम/एक्सटेंशन से लिंक
- 15. विस्तार प्रबंधक के बिना VS2010 एक्सटेंशन को अनइंस्टॉल करना
- 16. क्रोम एक्सटेंशन - सेटिंग्स पर विस्तार की छवि पेज
- 17. क्रोम एक्सटेंशन
- 18. एमआईएम प्रकार वेब सेवा में फ़ाइल एक्सटेंशन?
- 19. माइम-प्रकार <-> फ़ाइल एक्सटेंशन मैपिंग
- 20. एक्सटेंशन [nameHere] के लिए पंजीकृत प्रकार [nameHere] '
- 21. एसवीएन चेकआउट फ़ाइल एक्सटेंशन द्वारा फ़िल्टर किया गया?
- 22. विस्तार विधियां
- 23. मर्क्युरियल एक्सटेंशन
- 24. गतिशील LINQ कैसे विस्तार करें विस्तार विधि
- 25. जावास्क्रिप्ट प्रोटोटाइप विस्तार विधि
- 26. सामान्य प्रकार पैरामीटर कैसे कहते हैं "विस्तार" तुलनात्मक नहीं "उपकरण"?
- 27. HTTP हेडर का विस्तार करता है ब्राउज़र द्वारा सम्मानित नहीं?
- 28. मैं प्रतिबिंब द्वारा जावा कक्षाओं का विस्तार कैसे करूं?
- 29. आभासी विस्तार के तरीके?
- 30. क्रोम एक्सटेंशन
एक्सटेंशन आपको यह नहीं बताता कि सामग्री का प्रकार क्या है। इस पर भरोसा मत करो। –
एनन की टिप्पणी का पालन करने के रूप में: एक्सटेंशन पूरी तरह से क्षणिक है इसलिए एक निष्पादन योग्य (.exe) आसानी से आपके आवेदन की अपेक्षाओं में से एक के नाम पर बदला जा सकता है और आपका एप्लिकेशन यह निर्धारित करने में सक्षम नहीं होगा कि नामित फ़ाइल वास्तव में कुछ है अन्य प्रकार –