Respose.WriteFile () / Response.ContentType से विज्ञापन सामग्री प्रदर्शित करना

एक "डायनामिक" एएसपीएक्स पेज से कोई भी ऐड सामग्री कैसे प्रदर्शित करेगा? वर्तमान में मैं वेब सर्वर पर वेब सर्वर पर संग्रहीत फ़ाइल लिखने के लिए System.Web.HttpResponse "Page.Response" का उपयोग करने पर काम कर रहा हूं।

यह लोगों को http://www.foo.com?Image= प्रकार के लिए यूआरएल हिट करने की अनुमति देगा test.jpg और उनके ब्राउज़र में छवि प्रदर्शन है। तो जैसा कि आप जानते हैं कि यह Response.ContentType के उपयोग के आसपास घूमता है।

का उपयोग करके

Response.ContentType = "application/octet-stream";

मैं टाइप gif / jpeg / png की सभी छवियों को प्रदर्शित करने में सक्षम हूं (मैंने अभी तक परीक्षण किया है), एसएसएफ या .ico फाइलों को प्रदर्शित करने की कोशिश कर रहा थोड़ा मुझे एक छोटी सी त्रुटि देता है।

का उपयोग करते हुए

Response.ContentType = "application/x-shockwave-flash";

मैं खेलने के लिए फ्लैश फाइलें प्राप्त कर सकता हूं, लेकिन फिर छवियों को गड़बड़ कर दिया जाता है।

तो मैं सामग्री प्रकार का चयन कैसे आसानी से कर सकता हूं?

0
जोड़ा संपादित
विचारों: 2

4 उत्तर

Yup कीथ बदसूरत लेकिन सच है। मैंने एमआईएमई प्रकारों को समाप्त कर दिया जो हम डेटाबेस में उपयोग करेंगे और फिर जब मैं फ़ाइल प्रकाशित कर रहा था तो उन्हें बाहर खींचें। मैं अभी भी विश्वास नहीं कर सकता कि वहाँ प्रकारों की कोई स्वायत्त सूची नहीं है या एमएसडीएन में उपलब्ध क्या है इसका कोई उल्लेख नहीं है।

मैंने यह साइट जो कुछ मदद प्रदान की गई।

0
जोड़ा

यह एक समाधान का हिस्सा है जिसका उपयोग मैं स्थानीय इंट्रानेट पर करता हूं। कुछ चर जो आपको स्वयं को इकट्ठा करना होगा क्योंकि मैं उन्हें डेटाबेस से खींचता हूं लेकिन आप उन्हें कहीं और से खींच सकते हैं।

एकमात्र अतिरिक्त लेकिन मुझे वहां मिला है getMimeType नामक एक फ़ंक्शन है जो डेटाबेस से कनेक्ट होता है और फ़ाइल एक्सटेंशन के आधार पर सही मेरा प्रकार वापस खींचता है। यदि कोई भी नहीं मिलता है तो यह एप्लिकेशन / ऑक्टेट-स्ट्रीम पर डिफ़ॉल्ट होता है।

// Clear the response buffer incase there is anything already in it.
Response.Clear();
Response.Buffer = true;

// Read the original file from disk
FileStream myFileStream = new FileStream(sPath, FileMode.Open);
long FileSize = myFileStream.Length;
byte[] Buffer = new byte[(int)FileSize];
myFileStream.Read(Buffer, 0, (int)FileSize);
myFileStream.Close();

// Tell the browse stuff about the file
Response.AddHeader("Content-Length", FileSize.ToString());
Response.AddHeader("Content-Disposition", "inline; filename=" + sFilename.Replace(" ","_"));
Response.ContentType = getMimeType(sExtention, oConnection);

// Send the data to the browser
Response.BinaryWrite(Buffer);
Response.End();
0
जोड़ा

यह बदसूरत है, लेकिन फ़ाइल को देखने और सामग्री प्रकार को उपयुक्त के रूप में सेट करने का सबसे अच्छा तरीका है:

switch ( fileExtension )
{
    case "pdf": Response.ContentType = "application/pdf"; break; 
    case "swf": Response.ContentType = "application/x-shockwave-flash"; break; 

    case "gif": Response.ContentType = "image/gif"; break; 
    case "jpeg": Response.ContentType = "image/jpg"; break; 
    case "jpg": Response.ContentType = "image/jpg"; break; 
    case "png": Response.ContentType = "image/png"; break; 

    case "mp4": Response.ContentType = "video/mp4"; break; 
    case "mpeg": Response.ContentType = "video/mpeg"; break; 
    case "mov": Response.ContentType = "video/quicktime"; break; 
    case "wmv":
    case "avi": Response.ContentType = "video/x-ms-wmv"; break; 

    //and so on          

    default: Response.ContentType = "application/octet-stream"; break; 
}
0
जोड़ा

चूंकि .NET 4.5 कोई भी उपयोग कर सकता है

MimeMapping.GetMimeMapping

यह निर्दिष्ट फ़ाइल नाम के लिए MIME मैपिंग देता है।

https: // msdn .microsoft.com / en-us / पुस्तकालय / system.web.mimemapping.getmimemapping (v = vs.110) .aspx

0
जोड़ा