2011-05-29 14 views
13

मैं ASP.NET MVC 3. उपयोग कर रहा हूँ मैं एक नियंत्रक कार्रवाई है कि इस तरह एक पीडीएफ फाइल रिटर्न है:MVC के साथ ब्राउज़र टैब में खोलें पीडीएफ परिणाम 3

Public Class ReportController 
    ... 
    Function Generate(id As Integer) As ActionResult 
     ... 
     Return File(output, "application/pdf", "something.pdf") 
     ' "output" is a memory stream 
    End Function 

कोड काम करता है लेकिन फ़ायरफ़ॉक्स प्रदर्शित नहीं करता है परिणामस्वरूप एक टैब में, परिणाम या तो एडोब रीडर के साथ डाउनलोड या खोला जाता है।

मुझे पता है कि फ़ायरफ़ॉक्स एक टैब में पीडीएफ प्रदर्शित कर सकता है क्योंकि मैं सिर्फ कुछ पीडीएफ Google पर क्लिक कर सकता हूं, लिंक पर क्लिक कर सकता हूं, और पीडीएफ एक टैब में खुल जाएगा।

मैं कार्रवाई कैसे स्थापित करूं ताकि पीडीएफ एक टैब में खुल जाएगा?

उत्तर

21

मैं related links on the right से जवाब मिला की कोशिश की कोशिश:

Response.AppendHeader("Content-Disposition", "inline") 
Return File(output, "application/pdf") 

पीडीएफ एक टैब में खुलता है, लेकिन फ़ाइल नाम संकेत खो दिया है, भले ही मैं इसे इस तरह कार्य करें:

Response.AppendHeader("Content-Disposition", "inline; filename=something.pdf") 
Return File(output, "application/pdf", "something.pdf") 

तो अंत में मैं बिल्कुल भी फ़ाइल नाम संकेत देने के लिए परेशान नहीं किया।

संपादित

ASP.NET MVC 3 के 3 मानकों के साथ फ़ाइल:

Return File(output, "application/pdf", "something.pdf") 

प्रतिक्रिया हेडर को Content-Disposition: attachment; filename="something.pdf" जोड़ना होगा, वहाँ पहले से ही प्रतिक्रिया हेडर में एक सामग्री-विन्यास है, भले ही।

तो यदि आपने मैन्युअल रूप से शीर्षलेख में सामग्री-विस्थापन जोड़ा है, और उसके बाद फ़ाइल 3 पैरामीटर के साथ फ़ाइल का उपयोग करें, तो आप दो सामग्री-विस्थापन शीर्षलेख के साथ समाप्त होते हैं। फ़ायरफ़ॉक्स 8 कहेंगे कि प्रतिसाद हेडर इस तरह है तो प्रतिक्रिया दूषित हो जाती है।

Response.AppendHeader("Content-Disposition", "inline; filename=something.pdf") 
Return File(output, "application/pdf") 
+1

कुछ त्वरित परीक्षण से पता चला कि फ़ायरफ़ॉक्स, आईई 6/आई 7, और क्रोम सभी फ़ाइल नाम का उपयोग करते हैं। हालांकि, आईई 8 नहीं था। जानना उपयोगी हो सकता है। –

+0

किसी भी प्रकार की फ़ाइल (केवल पीडीएफ नहीं) के लिए सामग्री प्रकार प्राप्त करने के लिए, आप System.Web में MimeMapping.GetMimeMapping (फ़ाइल नाम) को कॉल कर सकते हैं। –

1

यह आपके ब्राउज़र में कॉन्फ़िगर करने योग्य है। आप ब्राउजर में डाउनलोड/खोलने के लिए सेटिंग्स को बदल सकते हैं या सभी फाइल प्रकारों के लिए टूल्स-> विकल्प-> एप्लिकेशन सेक्शन में प्रासंगिक एप्लिकेशन में खोल सकते हैं। थाई के पास आपके कोड से कुछ लेना देना नहीं है।

+0

लेकिन मैं इंटरनेट पर पीडीएफ के लिए कुछ लिंक मिल सकता है, और:

तो सबसे अच्छा अब यह करने के लिए जिस तरह से मैन्युअल रूप से 'इनलाइन' के लिए सामग्री-विन्यास जोड़ने के लिए, और फिर 2 मानकों के साथ फ़ाइल का उपयोग करें जब मैं लिंक पर क्लिक करता हूं तो पीडीएफ एक टैब में खुल जाएगा, इसलिए मुझे लगता है कि मेरी ब्राउजर सेटिंग समस्या नहीं है। –

+0

आईफ्रेम का उपयोग करने का प्रयास करें और पीडीएफ फ़ाइल पथ के रूप में स्रोत दें

0

पीडीएफ के लिए सीधे जोड़ने .... यह एक टैब में खुलता है, तो आपके रूट बदलकर .pdf साथ समाप्त करने के लिए

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