2013-11-01 9 views
7

मैं अपने डेटाबेस में एज़ूर ब्लॉब यूआरएल संग्रहीत कर रहा हूं। क्या मुझे उस यूआरएल का उपयोग करके ब्लॉब मिल सकता है? असल में मुझे ब्लॉब को अपडेट करने की आवश्यकता है और ऐसा करने के दौरान मुझे सत्यापन की आवश्यकता है। इसलिए मुझे उस डेटाबेस इकाई मॉडल को अपने स्थानीय मॉडल में परिवर्तित करने और उनके लिए मान्यताओं को लागू करने की आवश्यकता है। लेकिन मेरे स्थानीय मॉडल में मेरे पास आईडी, नाम, एचटीपीपोस्टेडफाइलबेस फ़ाइल है। जब मैं ब्लॉब डाल रहा हूं तो मुझे ब्लॉब यूआरएल मिल रहा है और इसे सहेज रहा है डेटाबेस में। लेकिन अद्यतन करते समय उस ब्लॉब को कैसे पुनर्प्राप्त करें? यह मेरा स्थानीय मॉडल हैक्या मैं अपने यूआरएल का उपयोग कर ब्लॉब प्राप्त कर सकता हूं?

public class BlobAppModel 
    { 
     public int Id { get; set; } 
     [Required(ErrorMessage="Please enter the name of the image")] 
     [Remote("IsNameAvailable","Home",HttpMethod="POST",ErrorMessage="Name Already Exists")] 
     public string Name { set; get; } 
     [Required(ErrorMessage="Please select an image file")] 
     public HttpPostedFileBase File { set; get; } 

    } 

एक मेरे entitymodel यह एक

public partial class BlobApp 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string Uri { get; set; } 
    } 

जब मैं इसे संपादित करने से कर रहा हूँ मैं ब्लॉब ..मैं अटक कर रहा हूँ प्राप्त करने की आवश्यकता here..Can किसी को भी मेरी मदद से बाहर है ?

public ActionResult Edit(string Id) 
     { 
      var data=BlobManager.GetBlob(Convert.ToInt32(Id)); 
      BlobStorageServices _blobstorageservice = new BlobStorageServices(); 
      CloudBlobContainer container = _blobstorageservice.GetCloudBlobContainer(); 
      CloudBlockBlob blob = container.GetBlockBlobReference(data.Uri.ToString()); 

      BlobAppModel model = new BlobAppModel { Id = data.Id, Name = data.Name, File =//This is where I need to get the file//}; 
      return View("Edit",BlobManager.GetBlob(Convert.ToInt32(Id))); 
     } 

उत्तर

6

एक ब्लॉब उपयोग करने के लिए सबसे अच्छा तरीका है, कंटेनर नाम और ब्लॉब संदर्भ के साथ भंडारण तक पहुँचने के द्वारा होता है जैसा कि यहां बताया: https://www.windowsazure.com/en-us/develop/net/how-to-guides/blob-storage/#download-blobs अपने कोड में आप नाम आप स्थापित करने के लिए ब्लॉब संदर्भ बदलने की जरूरत है अपलोड करते समय, यूरी को नहीं।

CloudBlockBlob blob = container.GetBlockBlobReference(data.Uri.ToString()); 

उपयोग इस बजाय:

CloudBlockBlob blob = container.GetBlockBlobReference("yourfile.jpg"); 

आप ब्लॉब यूआरएल है, और कंटेनर सार्वजनिक उपयोग आप बस एक सामान्य http ग्राहक का उपयोग कर इसे डाउनलोड करने से डेटा प्राप्त कर सकते हैं करने के लिए सेट है, तो।

7

जैसा कि क्रिस्टियन ने भी उल्लेख किया है, यदि आप अपने ब्लॉब का नाम रखते हैं तो आप GetBlockBlobReference का उपयोग कर सकते हैं। अन्यथा, यदि आप पूर्ण यूआरएल का उपयोग करना चाहते हैं, तो आप अपने constructors में से एक का उपयोग कर एक नया क्लाउडब्लॉकब्लॉब ऑब्जेक्ट बना सकते हैं जो उरी और स्टोरेज क्रेडेंशियल ऑब्जेक्ट लेता है। यदि आपके पास उरी में एसएएस क्रेडेंशियल हैं या ब्लॉब सार्वजनिक है तो आपको स्टोरेज क्रेडेंशियल्स ऑब्जेक्ट की भी आवश्यकता नहीं हो सकती है।

12
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
       ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString); 

    CloudBlockBlob blob = new CloudBlockBlob(new Uri(imgUrl),storageAccount.Credentials); 
1

ब्लॉब उरी और कंटेनर का उपयोग करके ब्लॉब संदर्भ प्राप्त करना संभव है। उदाहरण के लिए यदि आपको ब्लॉब को अपडेट या डिलीट करने की आवश्यकता है और आपके पास पहले से ही क्रेडेंशियल सेटअप के साथ कंटेनर है:

var blob = container.ServiceClient.GetBlobReferenceFromServer(blobUri); 
संबंधित मुद्दे

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