महान सवाल ... और अधिक जानकारी के हकदार हैं। मैं एक दिलचस्प स्थिति के परिणामस्वरूप खुद को यहां पाता हूं। हम MVC3 / C # वातावरण के माध्यम से कुछ पीडीएफ अटैचमेंट दे रहे थे। हमारा कोड जारी हो गया और हमें अपने ग्राहकों से कुछ प्रतिक्रियाएं मिलनी शुरू हो गईं कि जब वे क्रोम का उपयोग कर रहे थे तो डाउनलोड अजीब तरह से व्यवहार कर रहे थे और फ़ाइल प्रकार को 'पीडीएफ-, अटैचमेंट.पीएफडी, अटैचमेंट' में परिवर्तित किया जा रहा था। हाँ ... आप समझ गए ... पूरी बात। तो, कोई इसे सिर्फ 'पीडीएफ' के लिए फिर से लिख सकता है और फ़ाइल अभी भी बरकरार रहेगी, लेकिन क्या गड़बड़ है!
इसलिए, प्रारंभिक स्थिति का वर्णन करने के लिए, हम 'Content-Disposition' हेडर सेट कर रहे थे, फिर एक FileContentResult ...
var cd = new System.Net.Mime.ContentDisposition
{
FileName = result.Attachment.FileName,
Inline = false
};
Response.AppendHeader("Content-Disposition", cd.ToString());
return File(result.Attachment.Data, MimeExtensionHelper.GetMimeType(result.Attachment.FileName), result.Attachment.FileName);
अच्छा लगा। IE में ठीक काम किया। इसलिए मैंने कुछ शोध किया और इसके बजाय FileStreamResult को लागू करने की कोशिश की (सामग्री-विवाद निपटान को ध्यान में रखते हुए):
MemoryStream dataStream = new MemoryStream();
dataStream.Write(result.Attachment.Data, 0, result.Attachment.Data.Length);
dataStream.Position = 0;
return new FileStreamResult(dataStream, MimeExtensionHelper.GetMimeType(result.Attachment.FileName));
इसने क्रोम में मुद्दा तय किया! हम्म् ... लेकिन क्यों बिल्ली में मुझे अपनी पूरी अच्छी बाइट सरणी लेनी चाहिए और इसे स्ट्रीम करना चाहिए और फिर इसे सही काम करने के लिए फ़ाइल नाम प्राप्त करने के लिए इसके माध्यम से वापस करना चाहिए?
फिर फिडलर आया।
FileContentResult के साथ, मुझे हेडर में 2 कंटेंट-डिस्पोज़िशन मिले हैं। FileStreamResult के साथ, मुझे 1 मिला।
FileContentResult फ़ाइल नाम और क्रोम प्रदान करता है जब एक त्रुटि के रूप में इस हेडर के गुणकों पर विचार करता है जब एक सामग्री-विवाद शीर्षक जोड़ता है।
अजीब प्रतिक्रिया ... लेकिन निश्चित रूप से एक यह जानना अच्छा है।
System.Web.MimeMapping.GetMimeMapping(filename)
माइम प्रकार को इकट्ठा करने के लिए उपयोग कर सकते हैं यदि आप इसे आसानी से एक्सेस नहीं कर सकते हैं।