2013-03-27 13 views
17

क्या वेब उपयोगकर्ताओं को इंटरमीडिएरी के रूप में किसी अन्य सर्वर का उपयोग किये बिना सीधे एज़ूर ब्लॉब स्टोर में फ़ाइलों को अपलोड करने की अनुमति देने के लिए एक HTML फॉर्म बनाना संभव है? एस 3 और जीएडब्लू ब्लॉबस्टोर दोनों इसे अनुमति देते हैं लेकिन मुझे एज़ूर ब्लॉब स्टोरेज के लिए कोई समर्थन नहीं मिल रहा है।ब्राउज़र से सीधे Azure Blob संग्रहण में फ़ाइल अपलोड करें?

उत्तर

0

आप एचटीएमएल 5 फाइल एपीआई, एजेक्स और एमवीसी 3 का उपयोग एक मजबूत फ़ाइल अपलोड नियंत्रण बनाने के लिए कर सकते हैं ताकि बड़ी फाइलें सुरक्षित रूप से और विश्वसनीय रूप से विंडोज़ एज़ूर ब्लोब स्टोरेज को निगरानी ऑपरेशन प्रगति और ऑपरेशन रद्दीकरण के प्रावधान के साथ विश्वसनीय रूप से अपलोड कर सकें। समाधान नीचे जैसा काम करता है:

  1. क्लाइंट-साइड जावास्क्रिप्ट जो उपयोगकर्ता द्वारा अपलोड की गई फ़ाइल को स्वीकार और संसाधित करता है।
  2. सर्वर-साइड कोड जो जावास्क्रिप्ट द्वारा भेजे गए फ़ाइल खंडों को संसाधित करता है।
  3. क्लाइंट-साइड यूआई जो जावास्क्रिप्ट को आमंत्रित करता है।

यहाँ नमूना कोड प्राप्त करें: Reliable Uploads to Windows Azure Blob Storage via an HTML5 Control

+1

यह लेख, एक मध्यस्थ के रूप वेब सर्वर का उपयोग करता है एक कस्टम जावास्क्रिप्ट बेडौल विधि का उपयोग करने के लिए Azure हिस्सा पहुंचाता है। यह शायद चालाक है लेकिन सवाल के लिए उपयुक्त नहीं है। –

9

भंडारण बूँद को ब्राउज़र से सीधे फ़ाइलों को अपलोड करने के लिए इन ब्लॉग पोस्ट पर एक नज़र डालें कार्य करें:

http://coderead.wordpress.com/2012/11/21/uploading-files-directly-to-blob-storage-from-the-browser/

http://gauravmantri.com/2013/02/16/uploading-large-files-in-windows-azure-blob-storage-using-shared-access-signature-html-and-javascript

दूसरी पोस्ट (मेरे द्वारा लिखी गई) एचटीएमएल 5 फाइल एपीआई का उपयोग करती है और इस प्रकार सभी ब्राउज़रों में काम नहीं करेगी।

मूल विचार एक ब्लॉब कंटेनर के लिए Shared Access Signature (SAS) बनाना है। एसएएस में Write अनुमति होनी चाहिए। चूंकि विंडोज़ एज़ूर ब्लॉब स्टोरेज CORS का समर्थन नहीं करता है (जो कि अमेज़ॅन एस 3 और Google दोनों द्वारा समर्थित है), आपको ब्लॉब स्टोरेज में एचटीएमएल पेज होस्ट करना होगा जहां आप अपने उपयोगकर्ताओं को फाइल अपलोड करना चाहते हैं। फिर आप jQuery की अजाक्स कार्यक्षमता का उपयोग कर सकते हैं।

+4

अद्यतन: अब Azure [सीओआरएस का समर्थन करता है] (http://msdn.microsoft.com/en-us/library/windowsazure/dn535601.aspx)। –

+0

बीटीडब्ल्यू, आप अपने ब्लॉग पोस्ट को अपडेट करना चाहेंगे ... यदि आप अनुरोध के सामग्री-लंबाई शीर्षलेख मैन्युअल रूप से सेट करने का प्रयास करते हैं तो ब्राउज़र त्रुटियों को फेंक देगा। – RonLugge

+0

और जिस तरह से कई अन्य मुद्दों को हल किया गया (सीओआरएस को दर्दनाक बनाना सक्षम था!), मैंने पाया है कि स्पष्ट रूप से आपको अपने नमूने में मौजूद प्राधिकरण शीर्षलेख की आवश्यकता नहीं है। – RonLugge

1

मैं ऐसा करने के तरीके पर एक उदाहरण के साथ एक blog पोस्ट में लिखा है, code is at GitHub

यह Gaurav Mantris post पर आधारित है और ब्लॉब संग्रहण पर ही जावास्क्रिप्ट होस्टिंग द्वारा काम करता है।

5

अब विंडोज़ एज़ूर स्टोरेज सेवाएं कॉरस का समर्थन करती हैं, आप यह कर सकते हैं। आप यहां घोषणा देख सकते हैं: Windows Azure Storage Release - Introducing CORS, JSON, Minute Metrics, and Morehttp://www.contentmaster.com/azure/windows-azure-storage-cors/

उदाहरण को अपलोड करने और एक निजी ब्लॉब jQuery.ajax का उपयोग करने से सीधे डाउनलोड करने के लिए कैसे पता चलता है:

मैं एक साधारण उदाहरण है कि यहां इस परिदृश्य को दिखाता है। इस उदाहरण को अभी भी साझा एक्सेस हस्ताक्षर उत्पन्न करने के लिए एक सर्वर घटक की आवश्यकता है: यह क्लाइंट कोड में स्टोरेज खाता कुंजी का पर्दाफाश करने की आवश्यकता से बचाता है।

0

New Azure Storage JavaScript client library for browsers (Preview) है।

(इस पोस्ट से सब कुछ ऊपर मूल लेख से आता है)

  • Azure संग्रहण के लिए जावास्क्रिप्ट क्लाइंट लाइब्रेरी, कई वेब विकास ब्लॉब, टेबल, कतार, और फ़ाइल की तरह भंडारण सेवाओं का उपयोग परिदृश्यों में सक्षम बनाता है और आधुनिक ब्राउज़रों के साथ संगत है
  • ब्राउज़र के लिए नई जावास्क्रिप्ट क्लाइंट लाइब्रेरी नवीनतम आरईएसटी एपीआई संस्करण 2016-05-31 में उपलब्ध सभी स्टोरेज सुविधाओं का समर्थन करती है क्योंकि यह नोड.जेएस
  • के लिए एज़ूर स्टोरेज क्लाइंट लाइब्रेरी का उपयोग करके ब्राउज़रिफ़ के साथ बनाया गया है।

हम एज़ूर स्टोरेज के साथ प्रमाणित करने के लिए SAS tokens का उपयोग करने की अत्यधिक अनुशंसा करते हैं क्योंकि जावास्क्रिप्ट क्लाइंट लाइब्रेरी ब्राउज़र में उपयोगकर्ता को प्रमाणीकरण टोकन का पर्दाफाश करेगी। सीमित दायरे और समय के साथ एक एसएएस टोकन की अत्यधिक अनुशंसा की जाती है। एक आदर्श वेब एप्लिकेशन में यह अपेक्षा की जाती है कि बैकएंड एप्लिकेशन लॉग ऑन करते समय उपयोगकर्ताओं को प्रमाणित करेगा, और फिर क्लाइंट को संग्रहण खाते तक पहुंच अधिकृत करने के लिए क्लाइंट को एसएएस टोकन प्रदान करेगा। यह खाता कुंजी का उपयोग करके प्रमाणित करने की आवश्यकता को हटा देता है। हमारे जीथब भंडार में Azure Function sample देखें जो HTTP पोस्ट अनुरोध पर एसएएस टोकन उत्पन्न करता है।

कोड का नमूना:

  1. आपके HTML कोड में निम्न स्क्रिप्ट टैग डालें। सुनिश्चित करें कि एक ही फ़ोल्डर में स्थित जावास्क्रिप्ट फ़ाइलें।

    <script src="azure-storage.common.js"></script/> 
    <script src="azure-storage.blob.js"></script/> 
    
  2. चलिए अब स्थानांतरण शुरू करने के लिए पृष्ठ पर कुछ आइटम जोड़ते हैं। बॉडी टैग के अंदर निम्न टैग जोड़ें। ध्यान दें कि बटन क्लिक होने पर uploadBlobFromText विधि को कॉल करता है। हम इस विधि को अगले चरण में परिभाषित करेंगे।

    <input type="text" id="text" name="text" value="Hello World!" /> 
    <button id="upload-button" onclick="uploadBlobFromText()">Upload</button> 
    
  3. अब तक, हम क्लाइंट लाइब्रेरी शामिल है और उपयोगकर्ता एक पाठ इनपुट और हस्तांतरण आरंभ करने के लिए एक बटन को दिखाने के लिए एचटीएमएल कोड जोड़ लिया है। जब उपयोगकर्ता अपलोड बटन पर क्लिक करता है, तो अपलोडब्लॉब्रोमटेक्स्ट को कॉल किया जाएगा। चलो अब कि परिभाषित करते हैं:

    <script> 
    function uploadBlobFromText() { 
        // your account and SAS information 
        var sasKey ="...."; 
        var blobUri = "http://<accountname>.blob.core.windows.net"; 
        var blobService = AzureStorage.createBlobServiceWithSas(blobUri, sasKey).withFilter(new AzureStorage.ExponentialRetryPolicyFilter()); 
        var text = document.getElementById('text'); 
        var btn = document.getElementById("upload-button"); 
        blobService.createBlockBlobFromText('mycontainer', 'myblob', text.value, function(error, result, response){ 
         if (error) { 
          alert('Upload filed, open browser console for more detailed info.'); 
          console.log(error); 
         } else { 
          alert('Upload successfully!'); 
         } 
        }); 
    } 
    </script> 
    
संबंधित मुद्दे