2016-06-15 96 views
6

我不熟悉azure或rest api或c#,但無論如何,我必須這樣做,並且我沒有找到一個好的文檔來指導我......使用rest api將文件上傳到網絡應用的Azure文件存儲

所以這個Web應用程序,目前一個WebForm,沒有MVC ......這是怎麼回事Azure平臺上託管,

這個Web應用程序的主要功能是用戶上傳文件到Azure的文件存儲。

這些文件可能是PDF或MP3等,不是簡單的文本或數據流或數據輸入。

我被告知要使用Azure REST API來上傳文件,但我實際上並不熟悉它,無法在線找到好的示例或教程或視頻。目前來自微軟的文件看起來像是??????對我來說。

目前我只是上傳到本地文件夾,所以代碼如下所示: FileUpload1.PostedFile.SaveAs(Server.MapPath("fileupload\\" + FileUpload1.FileName)); in C#;

我從哪裏開始?我想我應該添加一個StorageConnectionString,它看起來像我已經擁有的DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=yyy

然後,我應該寫一些代碼,如'後'在C#中?這部分我真的不知道。這是一個愚蠢的問題嗎?

我真是一個初學者,我要感謝所有幫助,謝謝你們(T,T)

回答

13

天青提供您可以用它來上傳的NuGet庫,並做其他的「文件管理」類型的Azure文件存儲上的活動。

庫被稱爲: WindowsAzure.Storage

這裏有得到這個正在進行的基礎:這裏

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

更多鏈接和信息(注意滾動一種公平的方式下進行的樣品):https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-files/

+0

哦,我在哭,這很有幫助,謝謝!拯救我的一天。解決了大部分問題! – AprilX

+0

正因爲如此,我們使用「等待」?有必要嗎?當我使用它時,錯誤表示「等待操作符只能在Async方法中使用」,當我向我的「protected void Button1_Click」(這是按鈕點擊上傳文件)添加異步時,將其更改爲「protected async void」 ,另一個錯誤將顯示爲「此時異步操作無法啓動」...... 我感到羞愧,我不明白這麼多東西(T。T) – AprilX

+1

'UploadFromStreamAsync'是一個異步方法。所以你需要把它放在一個帶異步''static async void UploadFile()''的方法中,或者使用Wait()函數使其同步。 'cloudFile.UploadFromStreamAsync(FILESTREAM).Wait();'。祝你好運。 –

3

這段代碼是基於我從上面加里霍蘭得到的答案。我希望其他人從中受益。我不善於編程,希望代碼看起來不錯。

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


     } 
    } 
相關問題