/// <summary> /// Download blob to local file /// </summary> /// <param name="blob">Source blob object</param> /// <param name="filePath">Destination file path</param> internal virtual async Task DownloadBlob(long taskId, IStorageBlobManagement localChannel, ICloudBlob blob, string filePath) { string activity = String.Format(Resources.ReceiveAzureBlobActivity, blob.Name, filePath); string status = Resources.PrepareDownloadingBlob; ProgressRecord pr = new ProgressRecord(OutputStream.GetProgressId(taskId), activity, status); DataMovementUserData data = new DataMovementUserData() { Data = blob, TaskId = taskId, Channel = localChannel, Record = pr }; BlobDownloadJob downloadJob = new BlobDownloadJob() { SourceBlob = blob, DestPath = filePath, }; BlobRequestOptions requestOptions = downloadJob.BlobRequestOptions; requestOptions.DisableContentMD5Validation = !checkMd5; downloadJob.BlobRequestOptions = requestOptions; await this.RunTransferJob(downloadJob, data); this.WriteICloudBlobObject(data.TaskId, data.Channel, blob); }
/// <summary> /// Download blob to local file /// </summary> /// <param name="blob">Source blob object</param> /// <param name="filePath">Destination file path</param> internal virtual async Task<bool> DownloadBlob(long taskId, IStorageBlobManagement localChannel, ICloudBlob blob, string filePath) { string activity = String.Format(Resources.ReceiveAzureBlobActivity, blob.Name, filePath); string status = Resources.PrepareDownloadingBlob; ProgressRecord pr = new ProgressRecord(OutputStream.GetProgressId(taskId), activity, status); DataMovementUserData data = new DataMovementUserData() { Data = blob, TaskId = taskId, Channel = localChannel, Record = pr }; BlobDownloadJob downloadJob = new BlobDownloadJob() { SourceBlob = blob, DestPath = filePath, }; BlobRequestOptions requestOptions = downloadJob.BlobRequestOptions; requestOptions.DisableContentMD5Validation = !checkMd5; downloadJob.BlobRequestOptions = requestOptions; this.EnqueueTransferJob(downloadJob, data); return await data.taskSource.Task; }