2016-06-15 9 views
6

Ich bin nicht vertraut mit azurblau oder Rest api, oder C#, aber trotzdem muss ich dies tun und ich fand kein gutes Dokument, um mich zu führen ...Hochladen von Dateien in Azure-Dateispeicher von Web-app mit Rest api

so gibt es diesen Web-App, die derzeit ein Webformular, nicht MVC ..., die auf Azure-Plattform gehostet werden wird,

und eine Hauptfunktion dieses Web-App ist die Benutzerdateien zu Azure Datei hochladen Lager.

Die Dateien können pdf oder mp3 usw. sein, nicht einfacher Text oder Datenstrom oder Dateneingabe.

Mir wurde gesagt, dass ich Azure REST API verwenden soll, um Dateien hochzuladen, aber ich bin nicht wirklich damit vertraut und kann kein gutes Beispiel, Tutorial oder Video online finden. Die aktuellen Dokumente von Microsoft lesen sich wie ?????? mir.

Momentan lade ich nur in einen lokalen Ordner hoch, so dass der Code wie folgt aussieht: FileUpload1.PostedFile.SaveAs(Server.MapPath("fileupload\\" + FileUpload1.FileName)); in C#;

Wo fange ich von dort an? Ich denke, ich sollte eine StorageConnectionString hinzufügen, die wie DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=yyy aussieht, die ich bereits habe.

Und dann sollte ich einen Code wie 'Post' in C# schreiben? Dieser Teil weiß ich wirklich nicht. Ist es eine dumme Frage?

Ich bin wirklich ein Anfänger und ich bin dankbar für jede Hilfe, danke Jungs (T. T)

Antwort

13

Azure bieten eine nuget Bibliothek, die Sie hochladen können, und tun andere „Dateiverwaltung“ Typen Aktivitäten auf Azure-Dateispeicher.

Die Bibliothek heißt: WindowsAzure.Storage

Hier sind die Grundlagen dieses Gehen zu bekommen:

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

Weitere Links und Informationen hier (man beachte, eine faire Art und Weise nach unten scrollen für Proben): https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-files/

+0

oh mein, ich weine, das ist so hilfreich, danke! Rette meinen Tag. löste das meiste Problem! – AprilX

+0

Genau deshalb benutzen wir "erwarten"? Ist es nötig? Wenn ich es verwende, sagt Fehler "Warten Operator kann nur innerhalb einer Async-Methode verwendet werden", wenn ich Async zu meinem "geschützten void Button1_Click" hinzufügen (das ist die Schaltfläche klicken für Upload-Datei), ändern Sie es in "geschützte async void" , ein anderer Fehler wird angezeigt als "Eine asynchrone Operation kann zu diesem Zeitpunkt nicht gestartet werden" ...... Ich fühle mich beschämt, dass ich nicht so viele Dinge verstehe (T. T) – AprilX

+1

die 'UploadFromStreamAsync' ist eine asynchrone Methode. Sie müssen es also entweder in eine Methode mit async 'static async void UploadFile()' einfügen, oder Sie verwenden die Wait() - Funktion, um es synchron zu machen. 'cloudFile.UploadFromStreamAsync (fileStream) .Wait();'. Viel Glück. –

3

Dieser Code basiert auf der Antwort von Gary Holland oben. Ich hoffe, dass andere davon profitieren. Ich bin nicht gut im Programmieren, hoffentlich sieht der Code gut aus.