-1

CloudFile クラスを正しく使用して、MVC アプリ内から Azure ファイル ストレージにファイルをアップロードする Microsoft の例を見つけることができません。Microsoft のドキュメントには、Cloud File. Upload From Byte Array Asyncメソッドが示されています。ファイルの内容を byte[] として持っているので、UploadFromByteArrayAsync は、ファイルの内容を Azure 共有上のファイルの場所に保存する正しい方法のようです。

ただし、CloudFile クラスには beginupload および enduploadメソッドもあります。どのような条件下でこれらのメソッドを使用する必要がありますか?

4

2 に答える 2

3

これらのメソッドを使用する正しい方法は何ですか?

私が知る限り、 UploadFromByteArrayAsync メソッドは、非同期操作を実行してバイト配列の内容をファイルにアップロードするタスクを返します。

データは非同期で could ファイルに転送されます。

詳細については、以下のコードを参照してください。

  CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
     "connectionstring");
            CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

            CloudFileShare share = fileClient.GetShareReference("filesharename");

            CloudFileDirectory rootDir = share.GetRootDirectoryReference();


            int size = 5 * 1024 * 1024;
            byte[] buffer = new byte[size];
            Random rand = new Random();
            rand.NextBytes(buffer);

            CloudFile file = rootDir.GetFileReference("Log3.txt");

             file.UploadFromByteArrayAsync(buffer, 0, buffer.Length);

BeginUploadFromByteArray メソッドは、非同期操作を開始して、バイト配列の内容をファイルにアップロードします。

このメソッドを使用すると、プログラムは UploadFromByteArrayAsync としてデータを非同期にファイルに転送します。

メソッドを使用する場合は、非同期操作の完了時に通知を受け取るコールバック メソッドを作成する必要があります。

詳細については、以下のコードを参照してください。

 static void Main(string[] args)
        {

            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
     "connectionstring");
            CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

            CloudFileShare share = fileClient.GetShareReference("fileshare");

            CloudFileDirectory rootDir = share.GetRootDirectoryReference();


            int size = 5 * 1024 * 1024;
            byte[] buffer = new byte[size];
            Random rand = new Random();
            rand.NextBytes(buffer);

            CloudFile file = rootDir.GetFileReference("Log3.txt");

            //This string will pass to the callback function
            string result = "aa";

            //Begins an asynchronous operation to upload the contents of a byte array to a file. If the file already exists on the service, it will be overwritten.
            var res = file.BeginUploadFromByteArray(buffer, 0, buffer.Length, ProcessInformation, result);


        }

        static void ProcessInformation(IAsyncResult result)
        {

            //The callback delegate that will receive notification when the asynchronous operation completes.
            string Name = (string)result.AsyncState;

            //this Name is aa
            Console.WriteLine(Name);
            Console.WriteLine("Complete");
        }

EndUploadFromByteArray メソッドは、BeginUploadFromByteArray メソッドが完全に実行されるまで待機します。

使用方法については、以下のコードを参照してください。

  static void Main(string[] args)
        {
            // TableTest();
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
     "connectionstring");
            CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

            CloudFileShare share = fileClient.GetShareReference("fileshare");

            CloudFileDirectory rootDir = share.GetRootDirectoryReference();


            int size = 5 * 1024 * 1024;
            byte[] buffer = new byte[size];
            Random rand = new Random();
            rand.NextBytes(buffer);

            CloudFile file = rootDir.GetFileReference("Log3.txt");

             file.UploadFromByteArrayAsync(buffer, 0, buffer.Length);

            string result = "aa";

            //Begins an asynchronous operation to upload the contents of a byte array to a file. If the file already exists on the service, it will be overwritten.
            var res = file.BeginUploadFromByteArray(buffer, 0, buffer.Length, ProcessInformation, result);

            //Ends an asynchronous operation to upload the contents of a byte array to a file.
            //wait for the BeginUploadFromByteArray method execute completely then continue run the codes
            file.EndUploadFromByteArray(res);

            Console.ReadLine();

        }

        static void ProcessInformation(IAsyncResult result)
        {

            //The callback delegate that will receive notification when the asynchronous operation completes.
            string Name = (string)result.AsyncState;

            //this Name is aa
            Console.WriteLine(Name);

            Console.WriteLine("Complete");


        }
于 2017-05-17T06:37:15.657 に答える