<PackageReference Include="Azure.Storage.Blobs" Version="12.26.0-beta.1" />

BlobClient

public class BlobClient : BlobBaseClient
The BlobClient allows you to manipulate Azure Storage blobs.
using Azure.Core; using Azure.Core.Pipeline; using Azure.Storage.Blobs.Models; using Azure.Storage.Blobs.Specialized; using Azure.Storage.Cryptography; using System; using System.Buffers; using System.Collections.Generic; using System.ComponentModel; using System.IO; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace Azure.Storage.Blobs { public class BlobClient : BlobBaseClient { private BlockBlobClient _blockBlobClient; private BlockBlobClient BlockBlobClient { get { if (_blockBlobClient == null) _blockBlobClient = new BlockBlobClient(Uri, ClientConfiguration, ClientSideEncryption); return _blockBlobClient; } } protected BlobClient() { } public BlobClient(string connectionString, string blobContainerName, string blobName) : base(connectionString, blobContainerName, blobName) { } public BlobClient(string connectionString, string blobContainerName, string blobName, BlobClientOptions options) : base(connectionString, blobContainerName, blobName, options) { } public BlobClient(Uri blobUri, BlobClientOptions options = null) : base(blobUri, options) { } public BlobClient(Uri blobUri, StorageSharedKeyCredential credential, BlobClientOptions options = null) : base(blobUri, credential, options) { } public BlobClient(Uri blobUri, AzureSasCredential credential, BlobClientOptions options = null) : base(blobUri, credential, options) { } public BlobClient(Uri blobUri, TokenCredential credential, BlobClientOptions options = null) : base(blobUri, credential, options) { } internal BlobClient(Uri blobUri, BlobClientConfiguration clientConfiguration, ClientSideEncryptionOptions clientSideEncryption) : base(blobUri, clientConfiguration, clientSideEncryption) { } public new BlobClient WithSnapshot(string snapshot) { return new BlobClient(new BlobUriBuilder(Uri) { Snapshot = snapshot }.ToUri(), ClientConfiguration, ClientSideEncryption); } public new BlobClient WithVersion(string versionId) { return new BlobClient(new BlobUriBuilder(Uri) { VersionId = versionId }.ToUri(), ClientConfiguration, ClientSideEncryption); } public new BlobClient WithCustomerProvidedKey(CustomerProvidedKey? customerProvidedKey) { BlobClientConfiguration blobClientConfiguration = BlobClientConfiguration.DeepCopy(ClientConfiguration); blobClientConfiguration.CustomerProvidedKey = customerProvidedKey; Uri uri = Uri; BlobClientConfiguration clientConfiguration = blobClientConfiguration; object clientSideEncryption = (object)ClientSideEncryption; return new BlobClient(uri, clientConfiguration, (clientSideEncryption != null) ? clientSideEncryption.Clone() : null); } public new BlobClient WithEncryptionScope(string encryptionScope) { BlobClientConfiguration blobClientConfiguration = BlobClientConfiguration.DeepCopy(ClientConfiguration); blobClientConfiguration.EncryptionScope = encryptionScope; Uri uri = Uri; BlobClientConfiguration clientConfiguration = blobClientConfiguration; object clientSideEncryption = (object)ClientSideEncryption; return new BlobClient(uri, clientConfiguration, (clientSideEncryption != null) ? clientSideEncryption.Clone() : null); } protected internal virtual BlobClient WithClientSideEncryptionOptionsCore(ClientSideEncryptionOptions clientSideEncryptionOptions) { return new BlobClient(Uri, ClientConfiguration, clientSideEncryptionOptions); } public virtual Response<BlobContentInfo> Upload(Stream content) { return Upload(content, CancellationToken.None); } public virtual Response<BlobContentInfo> Upload(BinaryData content) { return Upload(content, CancellationToken.None); } public virtual Response<BlobContentInfo> Upload(string path) { return Upload(path, CancellationToken.None); } [AsyncStateMachine(typeof(<UploadAsync>d__16))] public virtual Task<Response<BlobContentInfo>> UploadAsync(Stream content) { <UploadAsync>d__16 stateMachine = default(<UploadAsync>d__16); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.content = content; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<UploadAsync>d__17))] public virtual Task<Response<BlobContentInfo>> UploadAsync(BinaryData content) { <UploadAsync>d__17 stateMachine = default(<UploadAsync>d__17); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.content = content; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<UploadAsync>d__18))] public virtual Task<Response<BlobContentInfo>> UploadAsync(string path) { <UploadAsync>d__18 stateMachine = default(<UploadAsync>d__18); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.path = path; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<BlobContentInfo> Upload(Stream content, CancellationToken cancellationToken) { return Upload(content, false, cancellationToken); } public virtual Response<BlobContentInfo> Upload(BinaryData content, CancellationToken cancellationToken) { return Upload(content, false, cancellationToken); } public virtual Response<BlobContentInfo> Upload(string path, CancellationToken cancellationToken) { return Upload(path, false, cancellationToken); } public virtual Task<Response<BlobContentInfo>> UploadAsync(Stream content, CancellationToken cancellationToken) { return UploadAsync(content, false, cancellationToken); } public virtual Task<Response<BlobContentInfo>> UploadAsync(BinaryData content, CancellationToken cancellationToken) { return UploadAsync(content, false, cancellationToken); } [AsyncStateMachine(typeof(<UploadAsync>d__24))] public virtual Task<Response<BlobContentInfo>> UploadAsync(string path, CancellationToken cancellationToken) { <UploadAsync>d__24 stateMachine = default(<UploadAsync>d__24); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.path = path; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<BlobContentInfo> Upload(Stream content, bool overwrite = false, CancellationToken cancellationToken = default(CancellationToken)) { object obj; if (!overwrite) { obj = new BlobRequestConditions(); obj.set_IfNoneMatch((ETag?)new ETag("*")); } else obj = null; return Upload(content, null, null, (BlobRequestConditions)obj, null, null, default(StorageTransferOptions), cancellationToken); } public virtual Response<BlobContentInfo> Upload(BinaryData content, bool overwrite = false, CancellationToken cancellationToken = default(CancellationToken)) { object obj; if (!overwrite) { obj = new BlobUploadOptions(); object obj2 = obj; BlobRequestConditions blobRequestConditions = new BlobRequestConditions(); blobRequestConditions.set_IfNoneMatch((ETag?)new ETag("*")); ((BlobUploadOptions)obj2).Conditions = blobRequestConditions; } else obj = null; return Upload(content, (BlobUploadOptions)obj, cancellationToken); } public virtual Response<BlobContentInfo> Upload(string path, bool overwrite = false, CancellationToken cancellationToken = default(CancellationToken)) { object obj; if (!overwrite) { obj = new BlobRequestConditions(); obj.set_IfNoneMatch((ETag?)new ETag("*")); } else obj = null; return Upload(path, null, null, (BlobRequestConditions)obj, null, null, default(StorageTransferOptions), cancellationToken); } public virtual Task<Response<BlobContentInfo>> UploadAsync(Stream content, bool overwrite = false, CancellationToken cancellationToken = default(CancellationToken)) { object obj; if (!overwrite) { obj = new BlobRequestConditions(); obj.set_IfNoneMatch((ETag?)new ETag("*")); } else obj = null; return UploadAsync(content, null, null, (BlobRequestConditions)obj, null, null, default(StorageTransferOptions), cancellationToken); } public virtual Task<Response<BlobContentInfo>> UploadAsync(BinaryData content, bool overwrite = false, CancellationToken cancellationToken = default(CancellationToken)) { object obj; if (!overwrite) { obj = new BlobUploadOptions(); object obj2 = obj; BlobRequestConditions blobRequestConditions = new BlobRequestConditions(); blobRequestConditions.set_IfNoneMatch((ETag?)new ETag("*")); ((BlobUploadOptions)obj2).Conditions = blobRequestConditions; } else obj = null; return UploadAsync(content, (BlobUploadOptions)obj, cancellationToken); } [AsyncStateMachine(typeof(<UploadAsync>d__30))] public virtual Task<Response<BlobContentInfo>> UploadAsync(string path, bool overwrite = false, CancellationToken cancellationToken = default(CancellationToken)) { <UploadAsync>d__30 stateMachine = default(<UploadAsync>d__30); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.path = path; stateMachine.overwrite = overwrite; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<BlobContentInfo> Upload(Stream content, BlobUploadOptions options, CancellationToken cancellationToken = default(CancellationToken)) { return StagedUploadInternal(content, options, false, cancellationToken).EnsureCompleted(); } public virtual Response<BlobContentInfo> Upload(BinaryData content, BlobUploadOptions options, CancellationToken cancellationToken = default(CancellationToken)) { using (Stream content2 = content.ToStream()) return StagedUploadInternal(content2, options, false, cancellationToken).EnsureCompleted(); } [EditorBrowsable(EditorBrowsableState.Never)] public virtual Response<BlobContentInfo> Upload(Stream content, BlobHttpHeaders httpHeaders = null, IDictionary<string, string> metadata = null, BlobRequestConditions conditions = null, IProgress<long> progressHandler = null, AccessTier? accessTier = default(AccessTier?), StorageTransferOptions transferOptions = default(StorageTransferOptions), CancellationToken cancellationToken = default(CancellationToken)) { return StagedUploadInternal(content, new BlobUploadOptions { HttpHeaders = httpHeaders, Metadata = metadata, Conditions = conditions, ProgressHandler = progressHandler, AccessTier = accessTier, TransferOptions = transferOptions }, false, cancellationToken).EnsureCompleted(); } public virtual Response<BlobContentInfo> Upload(string path, BlobUploadOptions options, CancellationToken cancellationToken = default(CancellationToken)) { using (FileStream content = new FileStream(path, FileMode.Open, FileAccess.Read)) return StagedUploadInternal(content, options, false, cancellationToken).EnsureCompleted(); } [EditorBrowsable(EditorBrowsableState.Never)] public virtual Response<BlobContentInfo> Upload(string path, BlobHttpHeaders httpHeaders = null, IDictionary<string, string> metadata = null, BlobRequestConditions conditions = null, IProgress<long> progressHandler = null, AccessTier? accessTier = default(AccessTier?), StorageTransferOptions transferOptions = default(StorageTransferOptions), CancellationToken cancellationToken = default(CancellationToken)) { using (FileStream content = new FileStream(path, FileMode.Open, FileAccess.Read)) return StagedUploadInternal(content, new BlobUploadOptions { HttpHeaders = httpHeaders, Metadata = metadata, Conditions = conditions, ProgressHandler = progressHandler, AccessTier = accessTier, TransferOptions = transferOptions }, false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<UploadAsync>d__36))] public virtual Task<Response<BlobContentInfo>> UploadAsync(Stream content, BlobUploadOptions options, CancellationToken cancellationToken = default(CancellationToken)) { <UploadAsync>d__36 stateMachine = default(<UploadAsync>d__36); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.content = content; stateMachine.options = options; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<UploadAsync>d__37))] public virtual Task<Response<BlobContentInfo>> UploadAsync(BinaryData content, BlobUploadOptions options, CancellationToken cancellationToken = default(CancellationToken)) { <UploadAsync>d__37 stateMachine = default(<UploadAsync>d__37); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.content = content; stateMachine.options = options; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [ForwardsClientCalls] [EditorBrowsable(EditorBrowsableState.Never)] public virtual Task<Response<BlobContentInfo>> UploadAsync(Stream content, BlobHttpHeaders httpHeaders = null, IDictionary<string, string> metadata = null, BlobRequestConditions conditions = null, IProgress<long> progressHandler = null, AccessTier? accessTier = default(AccessTier?), StorageTransferOptions transferOptions = default(StorageTransferOptions), CancellationToken cancellationToken = default(CancellationToken)) { return StagedUploadInternal(content, new BlobUploadOptions { HttpHeaders = httpHeaders, Metadata = metadata, Conditions = conditions, ProgressHandler = progressHandler, AccessTier = accessTier, TransferOptions = transferOptions }, true, cancellationToken); } [AsyncStateMachine(typeof(<UploadAsync>d__39))] public virtual Task<Response<BlobContentInfo>> UploadAsync(string path, BlobUploadOptions options, CancellationToken cancellationToken = default(CancellationToken)) { <UploadAsync>d__39 stateMachine = default(<UploadAsync>d__39); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.path = path; stateMachine.options = options; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<UploadAsync>d__40))] [ForwardsClientCalls] [EditorBrowsable(EditorBrowsableState.Never)] public virtual Task<Response<BlobContentInfo>> UploadAsync(string path, BlobHttpHeaders httpHeaders = null, IDictionary<string, string> metadata = null, BlobRequestConditions conditions = null, IProgress<long> progressHandler = null, AccessTier? accessTier = default(AccessTier?), StorageTransferOptions transferOptions = default(StorageTransferOptions), CancellationToken cancellationToken = default(CancellationToken)) { <UploadAsync>d__40 stateMachine = default(<UploadAsync>d__40); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.path = path; stateMachine.httpHeaders = httpHeaders; stateMachine.metadata = metadata; stateMachine.conditions = conditions; stateMachine.progressHandler = progressHandler; stateMachine.accessTier = accessTier; stateMachine.transferOptions = transferOptions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<StagedUploadInternal>d__41))] internal Task<Response<BlobContentInfo>> StagedUploadInternal(Stream content, BlobUploadOptions options, bool async = true, CancellationToken cancellationToken = default(CancellationToken)) { <StagedUploadInternal>d__41 stateMachine = default(<StagedUploadInternal>d__41); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.content = content; stateMachine.options = options; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<StagedUploadInternal>d__42))] internal Task<Response<BlobContentInfo>> StagedUploadInternal(string path, BlobUploadOptions options, bool async = true, CancellationToken cancellationToken = default(CancellationToken)) { <StagedUploadInternal>d__42 stateMachine = default(<StagedUploadInternal>d__42); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.path = path; stateMachine.options = options; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [ForwardsClientCalls] public virtual Stream OpenWrite(bool overwrite, BlobOpenWriteOptions options = null, CancellationToken cancellationToken = default(CancellationToken)) { return OpenWriteInternal(overwrite, options, false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<OpenWriteAsync>d__44))] [ForwardsClientCalls] public virtual Task<Stream> OpenWriteAsync(bool overwrite, BlobOpenWriteOptions options = null, CancellationToken cancellationToken = default(CancellationToken)) { <OpenWriteAsync>d__44 stateMachine = default(<OpenWriteAsync>d__44); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Stream>.Create(); stateMachine.<>4__this = this; stateMachine.overwrite = overwrite; stateMachine.options = options; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<OpenWriteInternal>d__45))] internal Task<Stream> OpenWriteInternal(bool overwrite, BlobOpenWriteOptions options, bool async, CancellationToken cancellationToken) { <OpenWriteInternal>d__45 stateMachine = default(<OpenWriteInternal>d__45); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Stream>.Create(); stateMachine.<>4__this = this; stateMachine.overwrite = overwrite; stateMachine.options = options; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } internal PartitionedUploader<BlobUploadOptions, BlobContentInfo> GetPartitionedUploader(StorageTransferOptions transferOptions, UploadTransferValidationOptions validationOptions, ArrayPool<byte> arrayPool = null, string operationName = null) { return BlockBlobClient.GetPartitionedUploader(transferOptions, validationOptions, arrayPool, operationName); } } }