Class BlobClient
- java.lang.Object
-
- com.azure.storage.blob.specialized.BlobClientBase
-
- com.azure.storage.blob.BlobClient
-
public class BlobClient extends BlobClientBase
This class provides a client that contains generic blob operations for Azure Storage Blobs. Operations allowed by the client are uploading and downloading, copying a blob, retrieving and setting metadata, retrieving and setting HTTP headers, and deleting and un-deleting a blob.This client is instantiated through
BlobClientBuilder
or retrieved viagetBlobClient
.For operations on a specific blob type (i.e append, block, or page) use
getAppendBlobClient
,getBlockBlobClient
, orgetPageBlobClient
to construct a client that allows blob specific operations.Please refer to the Azure Docs for more information.
-
-
Field Summary
Fields Modifier and Type Field Description static int
BLOB_DEFAULT_HTBB_UPLOAD_BLOCK_SIZE
If a blob is known to be greater than 100MB, using a larger block size will trigger some server-side optimizations.static int
BLOB_DEFAULT_NUMBER_OF_BUFFERS
The number of buffers to use if none is specied on the buffered upload method.static int
BLOB_DEFAULT_UPLOAD_BLOCK_SIZE
The block size to use if none is specified in parallel operations.
-
Constructor Summary
Constructors Modifier Constructor Description protected
BlobClient(BlobAsyncClient client)
Protected constructor for use byBlobClientBuilder
.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description AppendBlobClient
getAppendBlobClient()
Creates a newAppendBlobClient
associated with this blob.BlockBlobClient
getBlockBlobClient()
Creates a newBlockBlobClient
associated with this blob.BlobClient
getCustomerProvidedKeyClient(CustomerProvidedKey customerProvidedKey)
Creates a newBlobClient
with the specifiedcustomerProvidedKey
.BlobClient
getEncryptionScopeClient(String encryptionScope)
Creates a newBlobClient
with the specifiedencryptionScope
.PageBlobClient
getPageBlobClient()
Creates a newPageBlobClient
associated with this blob.BlobClient
getSnapshotClient(String snapshot)
Creates a newBlobClient
linked to thesnapshot
of this blob resource.BlobClient
getVersionClient(String versionId)
Creates a newBlobClient
linked to theversion
of this blob resource.void
upload(com.azure.core.util.BinaryData data)
Creates a new blob.void
upload(com.azure.core.util.BinaryData data, boolean overwrite)
Creates a new blob, or updates the content of an existing blob.void
upload(InputStream data, long length)
Creates a new blob.void
upload(InputStream data, long length, boolean overwrite)
Creates a new blob, or updates the content of an existing blob.void
uploadFromFile(String filePath)
Creates a new block blob.void
uploadFromFile(String filePath, boolean overwrite)
Creates a new block blob, or updates the content of an existing block blob.void
uploadFromFile(String filePath, ParallelTransferOptions parallelTransferOptions, BlobHttpHeaders headers, Map<String,String> metadata, AccessTier tier, BlobRequestConditions requestConditions, Duration timeout)
Creates a new block blob, or updates the content of an existing block blob.com.azure.core.http.rest.Response<BlockBlobItem>
uploadFromFileWithResponse(BlobUploadFromFileOptions options, Duration timeout, com.azure.core.util.Context context)
Creates a new block blob, or updates the content of an existing block blob.com.azure.core.http.rest.Response<BlockBlobItem>
uploadWithResponse(BlobParallelUploadOptions options, com.azure.core.util.Context context)
Deprecated.com.azure.core.http.rest.Response<BlockBlobItem>
uploadWithResponse(BlobParallelUploadOptions options, Duration timeout, com.azure.core.util.Context context)
Creates a new blob, or updates the content of an existing blob.void
uploadWithResponse(InputStream data, long length, ParallelTransferOptions parallelTransferOptions, BlobHttpHeaders headers, Map<String,String> metadata, AccessTier tier, BlobRequestConditions requestConditions, Duration timeout, com.azure.core.util.Context context)
Deprecated.-
Methods inherited from class com.azure.storage.blob.specialized.BlobClientBase
abortCopyFromUrl, abortCopyFromUrlWithResponse, beginCopy, beginCopy, beginCopy, copyFromUrl, copyFromUrlWithResponse, copyFromUrlWithResponse, createSnapshot, createSnapshotWithResponse, delete, deleteIfExists, deleteIfExistsWithResponse, deleteImmutabilityPolicy, deleteImmutabilityPolicyWithResponse, deleteWithResponse, download, downloadContent, downloadContentWithResponse, downloadStream, downloadStreamWithResponse, downloadToFile, downloadToFile, downloadToFileWithResponse, downloadToFileWithResponse, downloadToFileWithResponse, downloadWithResponse, exists, existsWithResponse, generateSas, generateSas, generateUserDelegationSas, generateUserDelegationSas, getAccountInfo, getAccountInfoWithResponse, getAccountName, getAccountUrl, getBlobName, getBlobUrl, getContainerClient, getContainerName, getCustomerProvidedKey, getHttpPipeline, getProperties, getPropertiesWithResponse, getServiceVersion, getSnapshotId, getTags, getTagsWithResponse, getVersionId, isSnapshot, openInputStream, openInputStream, openInputStream, openQueryInputStream, openQueryInputStreamWithResponse, query, queryWithResponse, setAccessTier, setAccessTierWithResponse, setAccessTierWithResponse, setHttpHeaders, setHttpHeadersWithResponse, setImmutabilityPolicy, setImmutabilityPolicyWithResponse, setLegalHold, setLegalHoldWithResponse, setMetadata, setMetadataWithResponse, setTags, setTagsWithResponse, undelete, undeleteWithResponse
-
-
-
-
Field Detail
-
BLOB_DEFAULT_UPLOAD_BLOCK_SIZE
public static final int BLOB_DEFAULT_UPLOAD_BLOCK_SIZE
The block size to use if none is specified in parallel operations.- See Also:
- Constant Field Values
-
BLOB_DEFAULT_NUMBER_OF_BUFFERS
public static final int BLOB_DEFAULT_NUMBER_OF_BUFFERS
The number of buffers to use if none is specied on the buffered upload method.- See Also:
- Constant Field Values
-
BLOB_DEFAULT_HTBB_UPLOAD_BLOCK_SIZE
public static final int BLOB_DEFAULT_HTBB_UPLOAD_BLOCK_SIZE
If a blob is known to be greater than 100MB, using a larger block size will trigger some server-side optimizations. If the block size is not set and the size of the blob is known to be greater than 100MB, this value will be used.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
BlobClient
protected BlobClient(BlobAsyncClient client)
Protected constructor for use byBlobClientBuilder
.- Parameters:
client
- the async blob client
-
-
Method Detail
-
getSnapshotClient
public BlobClient getSnapshotClient(String snapshot)
Creates a newBlobClient
linked to thesnapshot
of this blob resource.- Overrides:
getSnapshotClient
in classBlobClientBase
- Parameters:
snapshot
- the identifier for a specific snapshot of this blob- Returns:
- A
BlobClient
used to interact with the specific snapshot.
-
getVersionClient
public BlobClient getVersionClient(String versionId)
Creates a newBlobClient
linked to theversion
of this blob resource.- Overrides:
getVersionClient
in classBlobClientBase
- Parameters:
versionId
- the identifier for a specific version of this blob, passnull
to interact with the latest blob version.- Returns:
- A
BlobClient
used to interact with the specific version.
-
getEncryptionScopeClient
public BlobClient getEncryptionScopeClient(String encryptionScope)
Creates a newBlobClient
with the specifiedencryptionScope
.- Overrides:
getEncryptionScopeClient
in classBlobClientBase
- Parameters:
encryptionScope
- the encryption scope for the blob, passnull
to use no encryption scope.- Returns:
- a
BlobClient
with the specifiedencryptionScope
.
-
getCustomerProvidedKeyClient
public BlobClient getCustomerProvidedKeyClient(CustomerProvidedKey customerProvidedKey)
Creates a newBlobClient
with the specifiedcustomerProvidedKey
.- Overrides:
getCustomerProvidedKeyClient
in classBlobClientBase
- Parameters:
customerProvidedKey
- theCustomerProvidedKey
for the blob, passnull
to use no customer provided key.- Returns:
- a
BlobClient
with the specifiedcustomerProvidedKey
.
-
getAppendBlobClient
public AppendBlobClient getAppendBlobClient()
Creates a newAppendBlobClient
associated with this blob.- Returns:
- A
AppendBlobClient
associated with this blob.
-
getBlockBlobClient
public BlockBlobClient getBlockBlobClient()
Creates a newBlockBlobClient
associated with this blob.- Returns:
- A
BlockBlobClient
associated with this blob.
-
getPageBlobClient
public PageBlobClient getPageBlobClient()
Creates a newPageBlobClient
associated with this blob.- Returns:
- A
PageBlobClient
associated with this blob.
-
upload
public void upload(InputStream data, long length)
Creates a new blob. By default this method will not overwrite an existing blob.- Parameters:
data
- The data to write to the blob. The data must be markable. This is in order to support retries. If the data is not markable, consider opening aBlobOutputStream
and writing to the returned stream. Alternatively, consider wrapping your data source in aBufferedInputStream
to add mark support.length
- The exact length of the data. It is important that this value match precisely the length of the data provided in theInputStream
.
-
upload
public void upload(InputStream data, long length, boolean overwrite)
Creates a new blob, or updates the content of an existing blob.- Parameters:
data
- The data to write to the blob. The data must be markable. This is in order to support retries. If the data is not markable, consider opening aBlobOutputStream
and writing to the returned stream. Alternatively, consider wrapping your data source in aBufferedInputStream
to add mark support.length
- The exact length of the data. It is important that this value match precisely the length of the data provided in theInputStream
.overwrite
- Whether or not to overwrite, should data exist on the blob.
-
upload
public void upload(com.azure.core.util.BinaryData data)
Creates a new blob. By default this method will not overwrite an existing blob.- Parameters:
data
- The data to write to the blob.
-
upload
public void upload(com.azure.core.util.BinaryData data, boolean overwrite)
Creates a new blob, or updates the content of an existing blob.- Parameters:
data
- The data to write to the blob.overwrite
- Whether or not to overwrite, should data exist on the blob.
-
uploadWithResponse
@Deprecated public void uploadWithResponse(InputStream data, long length, ParallelTransferOptions parallelTransferOptions, BlobHttpHeaders headers, Map<String,String> metadata, AccessTier tier, BlobRequestConditions requestConditions, Duration timeout, com.azure.core.util.Context context)
Deprecated.Creates a new blob, or updates the content of an existing blob.To avoid overwriting, pass "*" to
BlobRequestConditions.setIfNoneMatch(String)
.- Parameters:
data
- The data to write to the blob. The data must be markable. This is in order to support retries. If the data is not markable, consider opening aBlobOutputStream
and writing to the returned stream. Alternatively, consider wrapping your data source in aBufferedInputStream
to add mark support.length
- The exact length of the data. It is important that this value match precisely the length of the data provided in theInputStream
.parallelTransferOptions
-ParallelTransferOptions
used to configure buffered uploading.headers
-BlobHttpHeaders
metadata
- Metadata to associate with the blob. If there is leading or trailing whitespace in any metadata key or value, it must be removed or encoded.tier
-AccessTier
for the destination blob.requestConditions
-BlobRequestConditions
timeout
- An optional timeout value beyond which aRuntimeException
will be raised.context
- Additional context that is passed through the Http pipeline during the service call.
-
uploadWithResponse
@Deprecated public com.azure.core.http.rest.Response<BlockBlobItem> uploadWithResponse(BlobParallelUploadOptions options, com.azure.core.util.Context context)
Deprecated.Creates a new blob, or updates the content of an existing blob.To avoid overwriting, pass "*" to
BlobRequestConditions.setIfNoneMatch(String)
.- Parameters:
options
-BlobParallelUploadOptions
context
- Additional context that is passed through the Http pipeline during the service call.- Returns:
- Information about the uploaded block blob.
-
uploadWithResponse
public com.azure.core.http.rest.Response<BlockBlobItem> uploadWithResponse(BlobParallelUploadOptions options, Duration timeout, com.azure.core.util.Context context)
Creates a new blob, or updates the content of an existing blob.To avoid overwriting, pass "*" to
BlobRequestConditions.setIfNoneMatch(String)
.- Parameters:
options
-BlobParallelUploadOptions
timeout
- An optional timeout value beyond which aRuntimeException
will be raised.context
- Additional context that is passed through the Http pipeline during the service call.- Returns:
- Information about the uploaded block blob.
-
uploadFromFile
public void uploadFromFile(String filePath)
Creates a new block blob. By default this method will not overwrite an existing blob.Code Samples
try { client.uploadFromFile(filePath); System.out.println("Upload from file succeeded"); } catch (UncheckedIOException ex) { System.err.printf("Failed to upload from file %s%n", ex.getMessage()); }
- Parameters:
filePath
- Path of the file to upload- Throws:
UncheckedIOException
- If an I/O error occurs
-
uploadFromFile
public void uploadFromFile(String filePath, boolean overwrite)
Creates a new block blob, or updates the content of an existing block blob.Code Samples
try { boolean overwrite = false; client.uploadFromFile(filePath, overwrite); System.out.println("Upload from file succeeded"); } catch (UncheckedIOException ex) { System.err.printf("Failed to upload from file %s%n", ex.getMessage()); }
- Parameters:
filePath
- Path of the file to uploadoverwrite
- Whether or not to overwrite, should the blob already exist- Throws:
UncheckedIOException
- If an I/O error occurs
-
uploadFromFile
public void uploadFromFile(String filePath, ParallelTransferOptions parallelTransferOptions, BlobHttpHeaders headers, Map<String,String> metadata, AccessTier tier, BlobRequestConditions requestConditions, Duration timeout)
Creates a new block blob, or updates the content of an existing block blob.To avoid overwriting, pass "*" to
BlobRequestConditions.setIfNoneMatch(String)
.Code Samples
BlobHttpHeaders headers = new BlobHttpHeaders() .setContentMd5("data".getBytes(StandardCharsets.UTF_8)) .setContentLanguage("en-US") .setContentType("binary"); Map<String, String> metadata = Collections.singletonMap("metadata", "value"); BlobRequestConditions requestConditions = new BlobRequestConditions() .setLeaseId(leaseId) .setIfUnmodifiedSince(OffsetDateTime.now().minusDays(3)); Long blockSize = 100L * 1024L * 1024L; // 100 MB; ParallelTransferOptions parallelTransferOptions = new ParallelTransferOptions().setBlockSizeLong(blockSize); try { client.uploadFromFile(filePath, parallelTransferOptions, headers, metadata, AccessTier.HOT, requestConditions, timeout); System.out.println("Upload from file succeeded"); } catch (UncheckedIOException ex) { System.err.printf("Failed to upload from file %s%n", ex.getMessage()); }
- Parameters:
filePath
- Path of the file to uploadparallelTransferOptions
-ParallelTransferOptions
to use to upload from file. Number of parallel transfers parameter is ignored.headers
-BlobHttpHeaders
metadata
- Metadata to associate with the blob. If there is leading or trailing whitespace in any metadata key or value, it must be removed or encoded.tier
-AccessTier
for the uploaded blobrequestConditions
-BlobRequestConditions
timeout
- An optional timeout value beyond which aRuntimeException
will be raised.- Throws:
UncheckedIOException
- If an I/O error occurs
-
uploadFromFileWithResponse
public com.azure.core.http.rest.Response<BlockBlobItem> uploadFromFileWithResponse(BlobUploadFromFileOptions options, Duration timeout, com.azure.core.util.Context context)
Creates a new block blob, or updates the content of an existing block blob.To avoid overwriting, pass "*" to
BlobRequestConditions.setIfNoneMatch(String)
.Code Samples
BlobHttpHeaders headers = new BlobHttpHeaders() .setContentMd5("data".getBytes(StandardCharsets.UTF_8)) .setContentLanguage("en-US") .setContentType("binary"); Map<String, String> metadata = Collections.singletonMap("metadata", "value"); Map<String, String> tags = Collections.singletonMap("tag", "value"); BlobRequestConditions requestConditions = new BlobRequestConditions() .setLeaseId(leaseId) .setIfUnmodifiedSince(OffsetDateTime.now().minusDays(3)); Long blockSize = 100 * 1024 * 1024L; // 100 MB; ParallelTransferOptions parallelTransferOptions = new ParallelTransferOptions().setBlockSizeLong(blockSize); try { client.uploadFromFileWithResponse(new BlobUploadFromFileOptions(filePath) .setParallelTransferOptions(parallelTransferOptions).setHeaders(headers).setMetadata(metadata) .setTags(tags).setTier(AccessTier.HOT).setRequestConditions(requestConditions), timeout, new Context(key2, value2)); System.out.println("Upload from file succeeded"); } catch (UncheckedIOException ex) { System.err.printf("Failed to upload from file %s%n", ex.getMessage()); }
- Parameters:
options
-BlobUploadFromFileOptions
timeout
- An optional timeout value beyond which aRuntimeException
will be raised.context
- Additional context that is passed through the Http pipeline during the service call.- Returns:
- Information about the uploaded block blob.
- Throws:
UncheckedIOException
- If an I/O error occurs
-
-