Begins an asynchronous operation to copy a blob's contents, properties, and metadata to a new blob. Namespace: Microsoft.WindowsAzure.StorageClient
Assembly: Microsoft.WindowsAzure.StorageClient (in Microsoft.WindowsAzure.StorageClient.dll)
Usage
Visual Basic |
---|
Dim instance As CloudBlob Dim source As CloudBlob Dim callback As AsyncCallback Dim state As Object Dim returnValue As IAsyncResult returnValue = instance.BeginCopyFromBlob(source, callback, state) |
Syntax
Visual Basic |
---|
Public Function BeginCopyFromBlob ( _ source As CloudBlob, _ callback As AsyncCallback, _ state As Object _ ) As IAsyncResult |
C# |
---|
public IAsyncResult BeginCopyFromBlob ( CloudBlob source, AsyncCallback callback, Object state ) |
C++ |
---|
public: IAsyncResult^ BeginCopyFromBlob ( CloudBlob^ source, AsyncCallback^ callback, Object^ state ) |
J# |
---|
JScript |
---|
Parameters
- source
Type: Microsoft.WindowsAzure.StorageClient.CloudBlob
The source blob.
- callback
Type: System.AsyncCallback
The callback delegate that will receive notification when the asynchronous operation completes.
- state
Type: System.Object
A user-defined object that will be passed to the callback delegate.
Return Value
Type: System.IAsyncResultAn IAsyncResult that references the asynchronous operation.Example
The following code example copies a blob only if an access condition on the source blob is met.
C# | Copy Code |
---|---|
static void CopyBlobAsync(Uri blobEndpoint, string accountName, string accountKey) { // Create service client for credentialed access to the Blob service. CloudBlobClient blobClient = new CloudBlobClient(blobEndpoint, new StorageCredentialsAccountAndKey(accountName, accountKey)); // Create a new blob by uploading a file. CloudBlob sourceBlob = blobClient.GetBlobReference("mycontainer/sourceblob.txt"); sourceBlob.UploadFile("C:\\somefile.txt"); // Get a reference to the destination blob. CloudBlob destBlob = blobClient.GetBlobReference("mycontainer/destblob.txt"); destBlob.BeginCopyFromBlob(sourceBlob, CopyBlobCallback, destBlob); } static void CopyBlobCallback(IAsyncResult result) { CloudBlob blobDest = (CloudBlob)result.AsyncState; // End the operation. blobDest.EndCopyFromBlob(result); } |
Remarks
The BeginCopyFromBlob method begins an operation to copy the source blob specified in the source parameter to the blob on which this method is called (the destination blob).
Copying a source blob always copies the entire blob; copying a range of bytes or a set of blocks is not supported.
A blob copy operation can take any of the following forms:
You can copy a source blob to a destination blob with a different name from that of the source blob. The destination blob can be an existing blob, or a new blob created by the copy operation.
You can copy a snapshot over its base blob. By promoting a snapshot to the position of the base blob, you can restore an earlier version of a blob.
You can copy a snapshot to a destination blob with a different name. The resulting destination blob is a writeable blob and not a snapshot.
Copying Blob Properties and Metadata
When a blob is copied, the following system properties are copied to the destination blob with the same values:
The source blob's committed block list is also copied to the destination blob, if the blob is a block blob. Any uncommitted blocks are not copied.
Copying Conditionally
You can specify an access condition to copy the blob only if a condition is met. To specify a condition on the destination blob, use the AccessCondition property. To specify a condition on the source blob, use the CopySourceAccessCondition property. If the specified condition is not met, the blob is not copied, and the Blob service returns HTTPStatusCode.PreconditionFailed.
Copying a Leased Blob
To copy a leased blob, use the CopyFrom method.
Copying Snapshots
When a source blob is copied, any snapshots of the source blob are not copied to the destination. When a destination blob is overwritten with a copy, any snapshots associated with the destination blob stay intact under its name.
You can perform a copy operation to promote a snapshot blob over its base blob. In this way you can restore an earlier version of a blob. The snapshot remains, but its source is overwritten with a copy that can be both read and written.