BeginUploadFromStream() 공개 메소드

Begins an asynchronous operation to upload a stream to a block blob.
public BeginUploadFromStream ( Stream source, AsyncCallback callback, object state ) : IAsyncResult
source Stream The stream providing the blob content.
callback AsyncCallback The callback delegate that will receive notification when the asynchronous operation completes.
state object A user-defined object that will be passed to the callback delegate.
리턴 IAsyncResult
        /// <summary>
        /// Puts the specified object onto the cloud storage provider.
        /// </summary>
        /// <param name="o">The object to store.</param>
        public void Put(AzureCloudFile o)
        {
            if (o.Data == null)
                throw new ArgumentNullException("o", "AzureCloudFile cannot be null.");

            if (o.Uri == null)
                throw new ArgumentException("Parameter 'Uri' of argument 'o' cannot be null.");

            string path = o.Uri.ToString();

            if (path.StartsWith(@"/"))
                path = path.Remove(0, 1);

            if (path.StartsWith(@"\\"))
                path = path.Remove(0, 1);

            if (path.StartsWith(@"\"))
                path = path.Remove(0, 1);

            // Remove double back slashes from anywhere in the path
            path = path.Replace(@"\\", @"\");

            CloudBlobContainer container = _blobClient.GetContainerReference(ContainerName);
            container.CreateIfNotExist();

            // Set permissions on the container
            BlobContainerPermissions perms = container.GetPermissions();
            if (perms.PublicAccess != BlobContainerPublicAccessType.Container)
            {
                perms.PublicAccess = BlobContainerPublicAccessType.Container;
                container.SetPermissions(perms);
            }

            // Create a reference for the filename
            String uniqueName = path;
            blob = container.GetBlobReference(uniqueName);

            // Create a new AsyncCallback instance
            AsyncCallback callback = PutOperationCompleteCallback;

            blob.BeginUploadFromStream(new MemoryStream(o.Data), callback, o.Uri);

            // Uncomment for synchronous upload
            // blob.UploadFromStream(new System.IO.MemoryStream(o.Data));
        }