2013-09-03 10 views
14

पर एक फ़ाइल अपलोड करें मैं सी # के साथ फ़ाइल कैसे अपलोड कर सकता हूं? मुझे एक संवाद विन्डो से एक फाइल अपलोड करने की जरूरत है।ब्लॉब स्टोरेज Azure

+0

चेक बाहर [ब्लॉब हस्तांतरण उपयोगिता] (https://blobtransferutility.codeplex.com/) ने अपने एक महान परियोजना, सी # में सभी। यह आपको दिखाएगा कि कैसे। – paqogomez

+0

यहां [GitHub] (https://github.com/AgentTy/General.CDN) पर एक सी # रैपर है, यह एज़ूर ब्लॉब्स या अमेज़ॅन एस 3 के साथ काम करता है, और स्थानीय कैशिंग और संस्करण जांच का समर्थन करता है। –

+0

यह [सी # एज़ूर ब्लोब स्टोरेज मैनेजर क्लास] (http://cc.davelozinski.com/code/csharp-azure-blob-storage-manager-class) बहुत अच्छी मूलभूत क्लास फ़ाइल है यदि किसी को भी उनके लिए कक्षा की आवश्यकता है सी # परियोजनाओं। –

उत्तर

2

हम BackgroundUploader वर्ग का उपयोग कर सकते हैं, तो हम और StorageFile वस्तु प्रदान करने के लिए जरूरत है एक उरी: आवश्यक नेमस्पेस:

using System; 
using System.Collections.Generic; 
using System.Threading; 
using System.Threading.Tasks; 
using Windows.Foundation; 
using Windows.Foundation.Collections; 
using Windows.Networking.BackgroundTransfer; 
using Windows.Storage.Pickers; 
using Windows.Storage; 

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

012 द्वारा प्रदान किए गए यूआई के माध्यम से फ़ाइल का चयन किया है
Uri uri = new Uri(serverAddressField.Text.Trim()); 
FileOpenPicker picker = new FileOpenPicker(); 
picker.FileTypeFilter.Add("*"); 
StorageFile file = await picker.PickSingleFileAsync(); 

और तब:

BackgroundUploader uploader = new BackgroundUploader(); 
uploader.SetRequestHeader("Filename", file.Name); 
UploadOperation upload = uploader.CreateUpload(uri, file); 

// Attach progress and completion handlers. 
await HandleUploadAsync(upload, true); 

Thats सभी

28
using Microsoft.WindowsAzure.Storage; 
using Microsoft.WindowsAzure.Storage.Auth; 
using Microsoft.WindowsAzure.Storage.Blob;  

// Retrieve storage account from connection string. 
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse("StorageKey"); 

// Create the blob client. 
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

// Retrieve reference to a previously created container. 
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer"); 

// Retrieve reference to a blob named "myblob". 
CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob"); 

// Create or overwrite the "myblob" blob with contents from a local file. 
using (var fileStream = System.IO.File.OpenRead(@"path\myfile")) 
{ 
    blockBlob.UploadFromStream(fileStream); 
} 

here जरूरत एसडीके और संदर्भ

मुझे लगता है कि यह है कि तुम क्या जरूरत है के बारे में देख

1

यहां पूरी विधि है।

[HttpPost] 
     public ActionResult Index(Doctor doct, HttpPostedFileBase photo) 
     { 

      try 
      { 
       if (photo != null && photo.ContentLength > 0) 
       { 
        // extract only the fielname 
        var fileName = Path.GetFileName(photo.FileName); 
        doct.Image = fileName.ToString(); 

        CloudStorageAccount cloudStorageAccount = DoctorController.GetConnectionString(); 
        CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient(); 
        CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("images"); 


        string imageName = Guid.NewGuid().ToString() + "-" +Path.GetExtension(photo.FileName); 

        CloudBlockBlob BlockBlob = cloudBlobContainer.GetBlockBlobReference(imageName); 

        BlockBlob.Properties.ContentType = photo.ContentType; 
        BlockBlob.UploadFromStreamAsync(photo.InputStream); 
        string imageFullPath = BlockBlob.Uri.ToString(); 

        var memoryStream = new MemoryStream(); 


        photo.InputStream.CopyTo(memoryStream); 
        memoryStream.ToArray(); 



        memoryStream.Seek(0, SeekOrigin.Begin); 
        using (var fs = photo.InputStream) 
        { 
         BlockBlob.UploadFromStreamAsync(memoryStream); 
        } 

       } 
      } 
      catch (Exception ex) 
      { 

      } 


      return View(); 
     } 

जहां getconnectionstring विधि यह है।

static string accountname = ConfigurationManager.AppSettings["accountName"]; 
     static string key = ConfigurationManager.AppSettings["key"]; 


      public static CloudStorageAccount GetConnectionString() 
      { 

       string connectionString = string.Format("DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}", accountname, key); 
       return CloudStorageAccount.Parse(connectionString); 
      } 
संबंधित मुद्दे