2016-06-15 17 views
6

Azure, ya da api ya da C# ile aşina değilim, ama yine de bunu yapmak zorundayım ve bana rehberlik edecek iyi bir belge bulamadım ...Kalan api kullanarak web uygulamasından Azure dosya depolama alanına dosya yükleme

böylece bu web Azure platformu üzerinde barındırılan olacak uygulama, henüz web formu, değil MVC ...

ve bu web uygulamasının ana fonksiyonu vardır Azure dosya kullanıcı dosya yüklemek mi Depolama. Dosyalar, basit metin veya veri akışı veya veri girişi değil, pdf veya mp3, vb. Olabilir.

Dosyaları yüklemek için Azure REST API'sini kullanmam söylendi, ancak gerçekten bu bilgilere aşina değilim ve çevrimiçi olarak iyi bir örnek veya eğitim veya video bulamıyorum. Microsoft'un mevcut belgeleri ?????? gibi okur bana göre.

Şu anda sadece yerel bir klasöre yüklüyorum, bu nedenle kod şöyle görünüyor: FileUpload1.PostedFile.SaveAs(Server.MapPath("fileupload\\" + FileUpload1.FileName)); C#;

Buradan nereden başlarım? Ben zaten var olan DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=yyy gibi görünüyor bir StorageConnectionString eklemek gerekiyor sanırım.

Ve sonra C# 'post' gibi bir kod yazmalıyım? Bu bölüm gerçekten bilmiyorum. Bu aptalca bir soru mu?

Gerçekten bir acemi ve Size bir (T. T)

cevap

13

Azure yüklemek için kullanabileceğiniz bir Nuget kütüphane sağlar ve diğer "dosya yönetimi" türlerini yapmak ederim, herhangi bir yardım için minnettarım Azure Dosya Depolama ile ilgili etkinlikler.

kütüphane denir: Burada WindowsAzure.Storage

böyle devam almanın temel bilgiler şunlardır: Burada

//Connect to Azure 
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString); 

// Create a reference to the file client. 
CloudFileClient = storageAccount.CreateCloudFileClient();  

// Create a reference to the Azure path 
CloudFileDirectory cloudFileDirectory = GetCloudFileShare().GetRootDirectoryReference().GetDirectoryReference(path); 

//Create a reference to the filename that you will be uploading 
CloudFile cloudFile = cloudSubDirectory.GetFileReference(fileName); 

//Open a stream from a local file. 
Stream fileStream= File.OpenRead(localfile); 

//Upload the file to Azure. 
await cloudFile.UploadFromStreamAsync(fileStream); 
fileStream.Dispose(); 

Daha bağlantıları ve bilgi (örnekler için aşağı adil bir şekilde kaydırma unutmayın): https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-files/

+0

oh benim ağlıyorum, bu çok yardımcı, teşekkürler! Günümü kurtar. problemin çoğunu çözdü! – AprilX

+0

Sadece "beklemek" neden bu yüzden? Bu gerekli? Bunu kullandığımda, "korumalı void Button1_Click" e eklediğimde (bu, "async void" korumalı void "olarak değiştirilir)," korumalı async void "olarak değiştirilirken hata," bekletme operatörü yalnızca bir Async yönteminde kullanılabilir "diyor. Başka bir hata "Eşzamansız bir işlem şu anda başlatılamıyor" olarak gösterecektir. 0 Çok fazla şey (T. T) – AprilX

+1

"UploadFromStreamAsync" bir zaman uyumsuz olduğunu anladığımdan utanıyorum yöntem. Yani ya async 'statik async void UploadFile()' ile bir yönteme ya da senkronize etmek için Wait() işlevini kullanmanız gerekir. 'CloudFile.UploadFromStreamAsync (Filestream) .Wait(); '. iyi şanslar. –

3

Bu kod, yukarıdaki Gary Holland'dan aldığım cevaplara dayanmaktadır. Umarım diğer insanlar bundan faydalanır. Programlamada iyi değilim, umarım kod iyi görünüyor.

if (FileUpload1.HasFile) 
    { 
     //Connect to Azure 
     CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString); 

     // Create a reference to the file client. 
     CloudFileClient fileClient = storageAccount.CreateCloudFileClient(); 

     // Get a reference to the file share we created previously. 
     CloudFileShare share = fileClient.GetShareReference("yourfilesharename"); 

     if (share.Exists()) 
     { 


      // Generate a SAS for a file in the share 
      CloudFileDirectory rootDir = share.GetRootDirectoryReference(); 
      CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("folderthatyouuploadto"); 
      CloudFile file = sampleDir.GetFileReference(FileUpload1.FileName); 

      Stream fileStream = FileUpload1.PostedFile.InputStream; 

      file.UploadFromStream(fileStream); 
      fileStream.Dispose(); 


     } 
    } 
İlgili konular