2016-06-15 14 views
6

私は紺碧、または残りのAPI、またはC#に慣れていませんが、とにかくこれを行う必要があります。残りのapiを使用してWebアプリケーションからAzureファイルストレージにファイルをアップロード

ので、このウェブAzureのプラットフォーム上でホストされようとしているアプリ、現在はWebフォームではなく、MVC ...、

このウェブアプリの主な機能はありAzureのファイルへのユーザーのファイルをアップロードすることですストレージ。

ファイルは、単純なテキストやデータストリームやデータ入力ではなく、pdfやmp3などです。

ファイルをアップロードするにはAzure REST APIを使用するように言われていますが、実際にはそれに精通しておらず、良いサンプルやチュートリアルやビデオをオンラインで見つけることができません。マイクロソフトからの現在のドキュメントは??????のように読む私に。

現在、ローカルフォルダにアップロードするだけで、コードは次のようになります。 FileUpload1.PostedFile.SaveAs(Server.MapPath("fileupload\\" + FileUpload1.FileName)); in C#;

どこから始めますか?私は既に持っているDefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=yyyのようなStorageConnectionStringを追加すると思います。

そして、私は、C#の '投稿'のようなコードを書く必要がありますか?この部分は本当に分かりません。それは愚かな質問ですか?

私は本当に初心者です、私は任意の助けを感謝しています、(T。T)の皆さんに感謝

答えて

13

Azureでは、アップロードするために使用できるnugetライブラリを提供し、他の「ファイル管理」の種類を行いますAzureファイルストレージのアクティビティ

ライブラリが呼び出されます。ここで

//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/

ここ WindowsAzure.Storage

は、この進行を得るための基本は、

+0

ああ私は泣いています。これはとても役に立ちます、ありがとうございます!私の一日を節約する。問題のほとんどを解決しました! – AprilX

+0

ちょうど私たちが "待って"使うのはなぜですか?それは必要ですか?私はそれを使用すると、私は "保護されたvoid Button1_Click"(アップロードファイルのボタンのクリック)に非同期を追加すると、 "非同期メソッド内でのみ使用することができます"他のエラーは "非同期操作はこの時点では開始できません"と表示されます...... 私は非常に多くのことを理解していないことを恥じています(T. T) – AprilX

+1

'UploadFromStreamAsync'は非同期です方法。したがって、非同期の '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(); 


     } 
    } 
関連する問題