2012-08-04 14 views
16

पर नेविगेट करते समय डाउनलोड करता है हमारे आवेदन में हम उपयोगकर्ता को विंडोज़ एज़ूर ब्लॉब स्टोरेज अकाउंट में एक दस्तावेज़ अपलोड करने का अधिकार देते हैं। दस्तावेज़ या छवि अपलोड करने के बाद इसे कुछ यूआरएल (https://name.blob.core.windows.net/container/file-name.jpg) असाइन किया जाता है। यदि दस्तावेज़ एक छवि या पीडीएफ या कुछ फ़ाइल है जिसे ब्राउजर द्वारा प्रस्तुत किया जा सकता है, तो हम इसे ब्राउज़र डाउनलोड करने की कोशिश किए बिना ब्राउज़र में प्रदर्शित करने की कोशिश कर रहे हैं। अगर हम सिर्फ एक नई विंडो या टैब खोलते हैं और उपयोगकर्ता को आईई में ब्लॉब यूरी में निर्देशित करते हैं, तो छवि या पीडीएफ ब्राउज़र में सही ढंग से प्रस्तुत करता है। लेकिन, अगर हम क्रोम, फ़ायरफ़ॉक्स, या सफारी में यूरी को इंगित करने वाली एक नई विंडो खोलने का प्रयास करते हैं, तो यह ब्राउज़र में इसे प्रदर्शित करने के बजाय फ़ाइल डाउनलोड करता है।एज़ूर ब्लॉब हमेशा यूआरएल

क्या बाद वाले तीन ब्राउज़र को इसे डाउनलोड करने के बजाय फ़ाइल को प्रदर्शित करने के लिए मजबूर करने का कोई तरीका है?

उत्तर

30

ऐसा इसलिए है क्योंकि आपने ब्लॉब की content type प्रॉपर्टी सेट नहीं की है (डिफ़ॉल्ट एप्लिकेशन/ऑक्टेट-स्ट्रीम है, जो अधिकांश ब्राउज़रों में डाउनलोड को ट्रिगर करता है)। यदि आप पीडीएफ फाइलों को सही तरीके से दिखाने के लिए चाहते हैं तो आपको अपनी पीडीएफ फाइलों के सामग्री प्रकार को एप्लिकेशन/पीडीएफ (जेपीईजी फाइलों के लिए छवि/जेपीईजी) में बदलना होगा।

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

+1

यूआरएल – spuder

19
blob.Properties.ContentType = "application/pdf"; 

// विस्तार

public static string GetFileContentType(string FilePath) 
    { 
     string ContentType = String.Empty; 
     string Extension = Path.GetExtension(FilePath).ToLower(); 

     switch (Extension) 
     { 
      case ConstantUtility.FILE_EXTENSION_PDF: 
       ContentType = "application/pdf"; 
       break; 
      case ConstantUtility.FILE_EXTENSION_TXT: 
       ContentType = "text/plain"; 
       break; 
      case ConstantUtility.FILE_EXTENSION_BMP: 
       ContentType = "image/bmp"; 
       break; 
      case ConstantUtility.FILE_EXTENSION_GIF: 
       ContentType = "image/gif"; 
       break; 
      case ConstantUtility.FILE_EXTENSION_PNG: 
       ContentType = "image/png"; 
       break; 
      case ConstantUtility.FILE_EXTENSION_JPG: 
       ContentType = "image/jpeg"; 
       break; 
      case ConstantUtility.FILE_EXTENSION_JPEG: 
       ContentType = "image/jpeg"; 
       break; 
      case ConstantUtility.FILE_EXTENSION_XLS: 
       ContentType = "application/vnd.ms-excel"; 
       break; 
      case ConstantUtility.FILE_EXTENSION_XLSX: 
       ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
       break; 
      case ConstantUtility.FILE_EXTENSION_CSV: 
       ContentType = "text/csv"; 
       break; 
      case ConstantUtility.FILE_EXTENSION_HTML: 
       ContentType = "text/html"; 
       break; 
      case ConstantUtility.FILE_EXTENSION_XML: 
       ContentType = "text/xml"; 
       break; 
      case ConstantUtility.FILE_EXTENSION_ZIP: 
       ContentType = "application/zip"; 
       break; 
      default: 
       ContentType = "application/octet-stream"; 
       break; 

     } 


     return ContentType; 
    } 

उपयोग करते हुए यह बचत इस ब्लॉब की सामग्री के प्रकार सेट करने से फ़ाइल की सामग्री प्रकार प्राप्त करें।

Set Content-type of media files stored on Blob

+2

अगर आप HttpPostedFileBase उपयोग करते हैं, यह पहले से ही सामग्री प्रकार attr शामिल अब मान्य नहीं है पूर्व: '' blockBlob.Properties.ContentType = httpPostedFileBase.ContentType; '' – user1686407

+1

कि पूरी तरह से काम किया; मैं अपनी फ़ाइल के लिए माइम प्रकार को स्वचालित रूप से निर्धारित करने के लिए इस पर बसने लगा: 'blob.Properties.ContentType = MimeMapping.GetMimeMapping (पथ);' –

0

PowerShell के माध्यम से फ़ाइलों को अपलोड करने वालों के लिए, अपलोड के दौरान सामग्री प्रकार सेट करने के लिए नीचे दिए गए वाक्य रचना का उपयोग करें।

Set-AzureStorageBlobContent -File <localFilePath> -Container <containerName> -Properties @{"ContentType"="text/plain"} -Context $ctx 

से ऊपर मैं पाठ में/सादे ब्लॉब सामग्री प्रकार निर्धारित करते हैं, उपयोगी जब JSON और HTML फ़ाइलों कि टेम्पलेट के साथ उपयोग किया जाएगा अपलोड करने। अधिक सामग्री प्रकार हेडर मानों की सूची here

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