2016-06-15 12 views
6

Nie jestem zaznajomiony z lazurowym lub restu api, lub C#, ale w każdym razie muszę to zrobić i nie znalazłem dobrego dokumentu, który by mnie poprowadził ...przesłać pliki do pamięci masowej Azure z aplikacji internetowej za pomocą api odpoczynku

więc nie jest to aplikacja internetowa, obecnie Webform, nie MVC ... która ma być umieszczona na platformie Azure,

a główną funkcją tej aplikacji internetowej jest, aby przesłać pliki użytkownika do pliku Azure Przechowywanie.

Pliki mogą być plikami pdf lub mp3, itp., A nie prostym tekstem lub strumieniem danych lub wprowadzaniem danych.

Polecono mi korzystać z interfejsu Azure REST API do przesyłania plików, ale nie jestem do końca zaznajomiony z nim i nie mogę znaleźć dobrej próbki lub samouczka lub wideo online. Bieżące dokumenty od Microsoftu brzmią jak ?????? Dla mnie.

Obecnie właśnie przesyłam plik do lokalnego folderu, więc kod wygląda następująco: FileUpload1.PostedFile.SaveAs(Server.MapPath("fileupload\\" + FileUpload1.FileName)); w języku C#;

Od czego zacząć? Myślę, że mam dodać StorageConnectionString, który wygląda jak DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=yyy, który już mam.

A następnie powinienem napisać jakiś kod jak "post" w języku C#? Ta część naprawdę nie wiem. Czy to głupie pytanie?

Jestem bardzo początkujący i jestem wdzięczny za wszelką pomoc, dziękuję chłopaki (T t.)

Odpowiedz

13

Azure zapewnić Nuget biblioteki, które można wykorzystać do przesłania, a nie innych „zarządzania plikami” typy działania w usłudze Azure File Storage.

Biblioteka nazywa się: WindowsAzure.Storage

Oto podstawy coraz to dzieje:

//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(); 

więcej linków i informacji tutaj (uwaga przewijać uczciwą drogę w dół do próbek): https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-files/

+0

o mój, ja płaczę, to jest bardzo pomocne, dziękuję! Uratuj mój dzień. rozwiązał większość problemu! – AprilX

+0

Właśnie dlatego używamy "czekania"? Czy to konieczne? Kiedy go używam, błąd mówi, że "oczekujący operator może być używany tylko w ramach metody asynchronicznej", kiedy dodaję asynchroniczne do mojego "chronionego pustego przycisku Button1_Click" (co jest kliknięciem przycisku do przesłania pliku), zmieniając go na "chroniony asynchroniczny nieważny" , inny błąd wyświetli się jako "Operacja asynchroniczna nie może być teraz uruchomiona" ...... Wstydzę się, że nie rozumiem tylu rzeczy (T) T: – AprilX

+1

"UploadFromStreamAsync" jest asynchronicznym metoda. Musisz więc umieścić go w metodzie asynchronicznej 'static async void UploadFile()' lub użyć funkcji Wait(), aby była synchroniczna. 'cloudFile.UploadFromStreamAsync (fileStream) .Wait();'. powodzenia. –

3

Ten fragment kodu opiera się na odpowiedzi, którą otrzymałem od Gary'ego Hollanda powyżej. Mam nadzieję, że skorzystają na tym inni ludzie. Nie jestem dobry w programowaniu, mam nadzieję, że kod wygląda dobrze.

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(); 


     } 
    } 
Powiązane problemy