BlockBlobClient Class

public final class BlockBlobClient
extends BlobClientBase

Client to a block blob. It may only be instantiated through a SpecializedBlobClientBuilder or via the method getBlockBlobClient(). This class does not hold any state about a particular blob, but is instead a convenient way of sending appropriate requests to the resource on the service.

Please refer to the Azure Docs for more information.

Field Summary

Modifier and Type Field and Description
static final int MAX_BLOCKS

Indicates the maximum number of blocks allowed in a block blob.

static final int MAX_STAGE_BLOCK_BYTES

Deprecated

Indicates the maximum number of bytes that can be sent in a call to stageBlock.

static final long MAX_STAGE_BLOCK_BYTES_LONG

Indicates the maximum number of bytes that can be sent in a call to stageBlock.

static final int MAX_UPLOAD_BLOB_BYTES

Deprecated

Indicates the maximum number of bytes that can be sent in a call to upload.

static final long MAX_UPLOAD_BLOB_BYTES_LONG

Indicates the maximum number of bytes that can be sent in a call to upload.

Method Summary

Modifier and Type Method and Description
BlockBlobItem commitBlockList(List<String> base64BlockIds)

Writes a blob by specifying the list of block IDs that are to make up the blob.

BlockBlobItem commitBlockList(List<String> base64BlockIds, boolean overwrite)

Writes a blob by specifying the list of block IDs that are to make up the blob.

Response<BlockBlobItem> commitBlockListWithResponse(BlockBlobCommitBlockListOptions options, Duration timeout, Context context)

Writes a blob by specifying the list of block IDs that are to make up the blob.

Response<BlockBlobItem> commitBlockListWithResponse(List<String> base64BlockIds, BlobHttpHeaders headers, Map<String,String> metadata, AccessTier tier, BlobRequestConditions requestConditions, Duration timeout, Context context)

Writes a blob by specifying the list of block IDs that are to make up the blob.

BlobOutputStream getBlobOutputStream()

Creates and opens an output stream to write data to the block blob.

BlobOutputStream getBlobOutputStream(boolean overwrite)

Creates and opens an output stream to write data to the block blob.

BlobOutputStream getBlobOutputStream(BlobRequestConditions requestConditions)

Creates and opens an output stream to write data to the block blob.

BlobOutputStream getBlobOutputStream(ParallelTransferOptions parallelTransferOptions, BlobHttpHeaders headers, Map<String,String> metadata, AccessTier tier, BlobRequestConditions requestConditions)

Creates and opens an output stream to write data to the block blob.

BlobOutputStream getBlobOutputStream(BlockBlobOutputStreamOptions options)

Creates and opens an output stream to write data to the block blob.

BlobOutputStream getBlobOutputStream(BlockBlobOutputStreamOptions options, Context context)

Creates and opens an output stream to write data to the block blob.

BlockBlobClient getCustomerProvidedKeyClient(CustomerProvidedKey customerProvidedKey)

Creates a new BlockBlobClient with the specified customerProvidedKey.

BlockBlobClient getEncryptionScopeClient(String encryptionScope)

Creates a new BlockBlobClient with the specified encryptionScope.

BlockList listBlocks(BlockListType listType)

Returns the list of blocks that have been uploaded as part of a block blob using the specified block list filter.

Response<BlockList> listBlocksWithResponse(BlockListType listType, String leaseId, Duration timeout, Context context)

Returns the list of blocks that have been uploaded as part of a block blob using the specified block list filter.

Response<BlockList> listBlocksWithResponse(BlockBlobListBlocksOptions options, Duration timeout, Context context)

Returns the list of blocks that have been uploaded as part of a block blob using the specified block list filter.

SeekableByteChannel openSeekableByteChannelWrite(BlockBlobSeekableByteChannelWriteOptions options)

Opens a seekable byte channel in write-only mode to upload the blob.

void stageBlock(String base64BlockId, BinaryData data)

Uploads the specified block to the block blob's "staging area" to be later committed by a call to commitBlockList.

void stageBlock(String base64BlockId, InputStream data, long length)

Uploads the specified block to the block blob's "staging area" to be later committed by a call to commitBlockList.

void stageBlockFromUrl(String base64BlockId, String sourceUrl, BlobRange sourceRange)

Creates a new block to be committed as part of a blob where the contents are read from a URL.

Response<Void> stageBlockFromUrlWithResponse(BlockBlobStageBlockFromUrlOptions options, Duration timeout, Context context)

Creates a new block to be committed as part of a blob where the contents are read from a URL.

Response<Void> stageBlockFromUrlWithResponse(String base64BlockId, String sourceUrl, BlobRange sourceRange, byte[] sourceContentMd5, String leaseId, BlobRequestConditions sourceRequestConditions, Duration timeout, Context context)

Creates a new block to be committed as part of a blob where the contents are read from a URL.

Response<Void> stageBlockWithResponse(BlockBlobStageBlockOptions options, Duration timeout, Context context)

Uploads the specified block to the block blob's "staging area" to be later committed by a call to commitBlockList.

Response<Void> stageBlockWithResponse(String base64BlockId, InputStream data, long length, byte[] contentMd5, String leaseId, Duration timeout, Context context)

Uploads the specified block to the block blob's "staging area" to be later committed by a call to commitBlockList.

BlockBlobItem upload(BinaryData data)

Creates a new block blob.

BlockBlobItem upload(BinaryData data, boolean overwrite)

Creates a new block blob, or updates the content of an existing block blob.

BlockBlobItem upload(InputStream data, long length)

Creates a new block blob.

BlockBlobItem upload(InputStream data, long length, boolean overwrite)

Creates a new block blob, or updates the content of an existing block blob.

BlockBlobItem uploadFromUrl(String sourceUrl)

Creates a new block blob, or updates the content of an existing block blob.

BlockBlobItem uploadFromUrl(String sourceUrl, boolean overwrite)

Creates a new block blob, or updates the content of an existing block blob.

Response<BlockBlobItem> uploadFromUrlWithResponse(BlobUploadFromUrlOptions options, Duration timeout, Context context)

Creates a new block blob, or updates the content of an existing block blob.

Response<BlockBlobItem> uploadWithResponse(BlockBlobSimpleUploadOptions options, Duration timeout, Context context)

Creates a new block blob, or updates the content of an existing block blob.

Response<BlockBlobItem> uploadWithResponse(InputStream data, long length, BlobHttpHeaders headers, Map<String,String> metadata, AccessTier tier, byte[] contentMd5, BlobRequestConditions requestConditions, Duration timeout, Context context)

Creates a new block blob, or updates the content of an existing block blob.

Methods inherited from BlobClientBase

abortCopyFromUrl abortCopyFromUrlWithResponse beginCopy beginCopy beginCopy copyFromUrl copyFromUrlWithResponse copyFromUrlWithResponse createSnapshot createSnapshotWithResponse delete deleteIfExists deleteIfExistsWithResponse deleteImmutabilityPolicy deleteImmutabilityPolicyWithResponse deleteWithResponse download downloadContent downloadContentWithResponse downloadContentWithResponse downloadStream downloadStreamWithResponse downloadToFile downloadToFile downloadToFileWithResponse downloadToFileWithResponse downloadToFileWithResponse downloadWithResponse exists existsWithResponse generateSas generateSas generateSas generateUserDelegationSas generateUserDelegationSas generateUserDelegationSas getAccountInfo getAccountInfoWithResponse getAccountName getAccountUrl getBlobName getBlobUrl getContainerClient getContainerName getCustomerProvidedKey getCustomerProvidedKeyClient getEncryptionScope getEncryptionScopeClient getHttpPipeline getProperties getPropertiesWithResponse getServiceVersion getSnapshotClient getSnapshotId getTags getTagsWithResponse getVersionClient getVersionId isSnapshot openInputStream openInputStream openInputStream openInputStream openQueryInputStream openQueryInputStreamWithResponse openSeekableByteChannelRead query queryWithResponse setAccessTier setAccessTierWithResponse setAccessTierWithResponse setHttpHeaders setHttpHeadersWithResponse setImmutabilityPolicy setImmutabilityPolicyWithResponse setLegalHold setLegalHoldWithResponse setMetadata setMetadataWithResponse setTags setTagsWithResponse undelete undeleteWithResponse

Methods inherited from java.lang.Object

Field Details

MAX_BLOCKS

public static final int MAX_BLOCKS

Indicates the maximum number of blocks allowed in a block blob.

MAX_STAGE_BLOCK_BYTES

@Deprecated
public static final int MAX_STAGE_BLOCK_BYTES

Deprecated

Indicates the maximum number of bytes that can be sent in a call to stageBlock.

MAX_STAGE_BLOCK_BYTES_LONG

public static final long MAX_STAGE_BLOCK_BYTES_LONG

Indicates the maximum number of bytes that can be sent in a call to stageBlock.

MAX_UPLOAD_BLOB_BYTES

@Deprecated
public static final int MAX_UPLOAD_BLOB_BYTES

Deprecated

Indicates the maximum number of bytes that can be sent in a call to upload.

MAX_UPLOAD_BLOB_BYTES_LONG

public static final long MAX_UPLOAD_BLOB_BYTES_LONG

Indicates the maximum number of bytes that can be sent in a call to upload.

Method Details

commitBlockList

public BlockBlobItem commitBlockList(List base64BlockIds)

Writes a blob by specifying the list of block IDs that are to make up the blob. In order to be written as part of a blob, a block must have been successfully written to the server in a prior stageBlock operation. You can call commitBlockList to update a blob by uploading only those blocks that have changed, then committing the new and existing blocks together. Any blocks not specified in the block list and permanently deleted. For more information, see the Azure Docs.

Code Samples

System.out.printf("Committing block list completed. Last modified: %s%n",
     client.commitBlockList(Collections.singletonList(base64BlockId)).getLastModified());

Parameters:

base64BlockIds - A list of base64 encode Strings that specifies the block IDs to be committed.

Returns:

The information of the block blob.

commitBlockList

public BlockBlobItem commitBlockList(List base64BlockIds, boolean overwrite)

Writes a blob by specifying the list of block IDs that are to make up the blob. In order to be written as part of a blob, a block must have been successfully written to the server in a prior stageBlock operation. You can call commitBlockList to update a blob by uploading only those blocks that have changed, then committing the new and existing blocks together. Any blocks not specified in the block list and permanently deleted. For more information, see the Azure Docs.

Code Samples

boolean overwrite = false; // Default behavior
 System.out.printf("Committing block list completed. Last modified: %s%n",
     client.commitBlockList(Collections.singletonList(base64BlockId), overwrite).getLastModified());

Parameters:

base64BlockIds - A list of base64 encode Strings that specifies the block IDs to be committed.
overwrite - Whether to overwrite, should data exist on the blob.

Returns:

The information of the block blob.

commitBlockListWithResponse

public Response commitBlockListWithResponse(BlockBlobCommitBlockListOptions options, Duration timeout, Context context)

Writes a blob by specifying the list of block IDs that are to make up the blob. In order to be written as part of a blob, a block must have been successfully written to the server in a prior stageBlock operation. You can call commitBlockList to update a blob by uploading only those blocks that have changed, then committing the new and existing blocks together. Any blocks not specified in the block list and permanently deleted. For more information, see the Azure Docs.

To avoid overwriting, pass "*" to setIfNoneMatch(String ifNoneMatch).

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));
 Context context = new Context("key", "value");

 System.out.printf("Committing block list completed with status %d%n",
     client.commitBlockListWithResponse(
         new BlockBlobCommitBlockListOptions(Collections.singletonList(base64BlockId)).setHeaders(headers)
             .setMetadata(metadata).setTags(tags).setTier(AccessTier.HOT)
             .setRequestConditions(requestConditions), timeout, context)
         .getStatusCode());

Parameters:

timeout - An optional timeout value beyond which a RuntimeException will be raised.
context - Additional context that is passed through the Http pipeline during the service call.

Returns:

The information of the block blob.

commitBlockListWithResponse

public Response commitBlockListWithResponse(List base64BlockIds, BlobHttpHeaders headers, Map metadata, AccessTier tier, BlobRequestConditions requestConditions, Duration timeout, Context context)

Writes a blob by specifying the list of block IDs that are to make up the blob. In order to be written as part of a blob, a block must have been successfully written to the server in a prior stageBlock operation. You can call commitBlockList to update a blob by uploading only those blocks that have changed, then committing the new and existing blocks together. Any blocks not specified in the block list and permanently deleted. For more information, see the Azure Docs.

To avoid overwriting, pass "*" to setIfNoneMatch(String ifNoneMatch).

Code Samples

BlobHttpHeaders headers = new BlobHttpHeaders()
     .setContentMd5(MessageDigest.getInstance("MD5").digest("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));
 Context context = new Context("key", "value");

 System.out.printf("Committing block list completed with status %d%n",
     client.commitBlockListWithResponse(Collections.singletonList(base64BlockId), headers, metadata,
         AccessTier.HOT, requestConditions, timeout, context).getStatusCode());

Parameters:

base64BlockIds - A list of base64 encode Strings that specifies the block IDs to be committed.
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 a RuntimeException will be raised.
context - Additional context that is passed through the Http pipeline during the service call.

Returns:

The information of the block blob.

getBlobOutputStream

public BlobOutputStream getBlobOutputStream()

Creates and opens an output stream to write data to the block blob.

Note: We recommend you call write with reasonably sized buffers, you can do so by wrapping the BlobOutputStream obtained below with a BufferedOutputStream.

Returns:

A BlobOutputStream object used to write data to the blob.

getBlobOutputStream

public BlobOutputStream getBlobOutputStream(boolean overwrite)

Creates and opens an output stream to write data to the block blob.

Note: We recommend you call write with reasonably sized buffers, you can do so by wrapping the BlobOutputStream obtained below with a BufferedOutputStream.

Parameters:

overwrite - Whether to overwrite, should data exist on the blob.

Returns:

A BlobOutputStream object used to write data to the blob.

getBlobOutputStream

public BlobOutputStream getBlobOutputStream(BlobRequestConditions requestConditions)

Creates and opens an output stream to write data to the block blob. If the blob already exists on the service, it will be overwritten.

To avoid overwriting, pass "*" to setIfNoneMatch(String ifNoneMatch).

Note: We recommend you call write with reasonably sized buffers, you can do so by wrapping the BlobOutputStream obtained below with a BufferedOutputStream.

Parameters:

requestConditions - A BlobRequestConditions object that represents the access conditions for the blob.

Returns:

A BlobOutputStream object used to write data to the blob.

getBlobOutputStream

public BlobOutputStream getBlobOutputStream(ParallelTransferOptions parallelTransferOptions, BlobHttpHeaders headers, Map metadata, AccessTier tier, BlobRequestConditions requestConditions)

Creates and opens an output stream to write data to the block blob. If the blob already exists on the service, it will be overwritten.

To avoid overwriting, pass "*" to setIfNoneMatch(String ifNoneMatch).

Note: We recommend you call write with reasonably sized buffers, you can do so by wrapping the BlobOutputStream obtained below with a BufferedOutputStream.

Parameters:

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

Returns:

A BlobOutputStream object used to write data to the blob.

getBlobOutputStream

public BlobOutputStream getBlobOutputStream(BlockBlobOutputStreamOptions options)

Creates and opens an output stream to write data to the block blob. If the blob already exists on the service, it will be overwritten.

To avoid overwriting, pass "*" to setIfNoneMatch(String ifNoneMatch).

Note: We recommend you call write with reasonably sized buffers, you can do so by wrapping the BlobOutputStream obtained below with a BufferedOutputStream.

Parameters:

Returns:

A BlobOutputStream object used to write data to the blob.

getBlobOutputStream

public BlobOutputStream getBlobOutputStream(BlockBlobOutputStreamOptions options, Context context)

Creates and opens an output stream to write data to the block blob. If the blob already exists on the service, it will be overwritten.

To avoid overwriting, pass "*" to setIfNoneMatch(String ifNoneMatch).

Note: We recommend you call write with reasonably sized buffers, you can do so by wrapping the BlobOutputStream obtained below with a BufferedOutputStream.

Parameters:

context - Additional context that is passed through the Http pipeline during the service call.

Returns:

A BlobOutputStream object used to write data to the blob.

getCustomerProvidedKeyClient

public BlockBlobClient getCustomerProvidedKeyClient(CustomerProvidedKey customerProvidedKey)

Creates a new BlockBlobClient with the specified customerProvidedKey.

Overrides:

BlockBlobClient.getCustomerProvidedKeyClient(CustomerProvidedKey customerProvidedKey)

Parameters:

customerProvidedKey - the CustomerProvidedKey for the blob, pass null to use no customer provided key.

Returns:

a BlockBlobClient with the specified customerProvidedKey.

getEncryptionScopeClient

public BlockBlobClient getEncryptionScopeClient(String encryptionScope)

Creates a new BlockBlobClient with the specified encryptionScope.

Overrides:

BlockBlobClient.getEncryptionScopeClient(String encryptionScope)

Parameters:

encryptionScope - the encryption scope for the blob, pass null to use no encryption scope.

Returns:

a BlockBlobClient with the specified encryptionScope.

listBlocks

public BlockList listBlocks(BlockListType listType)

Returns the list of blocks that have been uploaded as part of a block blob using the specified block list filter. For more information, see the Azure Docs.

Code Samples

BlockList block = client.listBlocks(BlockListType.ALL);

 System.out.println("Committed Blocks:");
 block.getCommittedBlocks().forEach(b -> System.out.printf("Name: %s, Size: %d", b.getName(), b.getSizeLong()));

 System.out.println("Uncommitted Blocks:");
 block.getUncommittedBlocks().forEach(b -> System.out.printf("Name: %s, Size: %d", b.getName(), b.getSizeLong()));

Parameters:

listType - Specifies which type of blocks to return.

Returns:

The list of blocks.

listBlocksWithResponse

public Response listBlocksWithResponse(BlockListType listType, String leaseId, Duration timeout, Context context)

Returns the list of blocks that have been uploaded as part of a block blob using the specified block list filter. For more information, see the Azure Docs.

Code Samples

Context context = new Context("key", "value");
 BlockList block = client.listBlocksWithResponse(BlockListType.ALL, leaseId, timeout, context).getValue();

 System.out.println("Committed Blocks:");
 block.getCommittedBlocks().forEach(b -> System.out.printf("Name: %s, Size: %d", b.getName(), b.getSizeLong()));

 System.out.println("Uncommitted Blocks:");
 block.getUncommittedBlocks().forEach(b -> System.out.printf("Name: %s, Size: %d", b.getName(), b.getSizeLong()));

Parameters:

listType - Specifies which type of blocks to return.
leaseId - The lease ID the active lease on the blob must match.
timeout - An optional timeout value beyond which a RuntimeException will be raised.
context - Additional context that is passed through the Http pipeline during the service call.

Returns:

The list of blocks.

listBlocksWithResponse

public Response listBlocksWithResponse(BlockBlobListBlocksOptions options, Duration timeout, Context context)

Returns the list of blocks that have been uploaded as part of a block blob using the specified block list filter. For more information, see the Azure Docs.

Code Samples

Context context = new Context("key", "value");
 BlockList block = client.listBlocksWithResponse(new BlockBlobListBlocksOptions(BlockListType.ALL)
     .setLeaseId(leaseId)
     .setIfTagsMatch(tags), timeout, context).getValue();

 System.out.println("Committed Blocks:");
 block.getCommittedBlocks().forEach(b -> System.out.printf("Name: %s, Size: %d", b.getName(), b.getSizeLong()));

 System.out.println("Uncommitted Blocks:");
 block.getUncommittedBlocks().forEach(b -> System.out.printf("Name: %s, Size: %d", b.getName(), b.getSizeLong()));

Parameters:

timeout - An optional timeout value beyond which a RuntimeException will be raised.
context - Additional context that is passed through the Http pipeline during the service call.

Returns:

The list of blocks.

openSeekableByteChannelWrite

public SeekableByteChannel openSeekableByteChannelWrite(BlockBlobSeekableByteChannelWriteOptions options)

Opens a seekable byte channel in write-only mode to upload the blob.

Parameters:

Returns:

A SeekableByteChannel object that represents the channel to use for writing to the blob.

stageBlock

public void stageBlock(String base64BlockId, BinaryData data)

Uploads the specified block to the block blob's "staging area" to be later committed by a call to commitBlockList. For more information, see the Azure Docs.

Code Samples

BinaryData binaryData = BinaryData.fromStream(data, length);
 client.stageBlock(base64BlockId, binaryData);

Parameters:

base64BlockId - A Base64 encoded String that specifies the ID for this block. Note that all block ids for a given blob must be the same length.
data - The data to write to the block. Note that this BinaryData must have defined length and must be replayable if retries are enabled (the default), see BinaryData#isReplayable().

stageBlock

public void stageBlock(String base64BlockId, InputStream data, long length)

Uploads the specified block to the block blob's "staging area" to be later committed by a call to commitBlockList. For more information, see the Azure Docs.

Code Samples

client.stageBlock(base64BlockId, data, length);

Parameters:

base64BlockId - A Base64 encoded String that specifies the ID for this block. Note that all block ids for a given blob must be the same length.
data - The data to write to the block. The data must be markable. This is in order to support retries. If the data is not markable, consider using getBlobOutputStream() and writing to the returned OutputStream. Alternatively, consider wrapping your data source in a BufferedInputStream 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 the InputStream.

stageBlockFromUrl

public void stageBlockFromUrl(String base64BlockId, String sourceUrl, BlobRange sourceRange)

Creates a new block to be committed as part of a blob where the contents are read from a URL. For more information, see the Azure Docs.

Code Samples

client.stageBlockFromUrl(base64BlockId, sourceUrl, new BlobRange(offset, count));

Parameters:

base64BlockId - A Base64 encoded String that specifies the ID for this block. Note that all block ids for a given blob must be the same length.
sourceUrl - The url to the blob that will be the source of the copy. A source blob in the same storage account can be authenticated via Shared Key. However, if the source is a blob in another account, the source blob must either be public or must be authenticated via a shared access signature. If the source blob is public, no authentication is required to perform the operation.
sourceRange - BlobRange

stageBlockFromUrlWithResponse

public Response stageBlockFromUrlWithResponse(BlockBlobStageBlockFromUrlOptions options, Duration timeout, Context context)

Creates a new block to be committed as part of a blob where the contents are read from a URL. For more information, see the Azure Docs.

Code Samples

BlobRequestConditions sourceRequestConditions = new BlobRequestConditions()
     .setIfUnmodifiedSince(OffsetDateTime.now().minusDays(3));
 Context context = new Context("key", "value");

 System.out.printf("Staging block from URL completed with status %d%n",
     client.stageBlockFromUrlWithResponse(new BlockBlobStageBlockFromUrlOptions(base64BlockId, sourceUrl)
         .setSourceRange(new BlobRange(offset, count)).setLeaseId(leaseId)
         .setSourceRequestConditions(sourceRequestConditions), timeout, context).getStatusCode());

Parameters:

options - Parameters for the operation
timeout - An optional timeout value beyond which a RuntimeException will be raised.
context - Additional context that is passed through the Http pipeline during the service call.

Returns:

A response containing status code and HTTP headers

stageBlockFromUrlWithResponse

public Response stageBlockFromUrlWithResponse(String base64BlockId, String sourceUrl, BlobRange sourceRange, byte[] sourceContentMd5, String leaseId, BlobRequestConditions sourceRequestConditions, Duration timeout, Context context)

Creates a new block to be committed as part of a blob where the contents are read from a URL. For more information, see the Azure Docs.

Code Samples

BlobRequestConditions sourceRequestConditions = new BlobRequestConditions()
     .setIfUnmodifiedSince(OffsetDateTime.now().minusDays(3));
 Context context = new Context("key", "value");

 System.out.printf("Staging block from URL completed with status %d%n",
     client.stageBlockFromUrlWithResponse(base64BlockId, sourceUrl, new BlobRange(offset, count), null,
         leaseId, sourceRequestConditions, timeout, context).getStatusCode());

Parameters:

base64BlockId - A Base64 encoded String that specifies the ID for this block. Note that all block ids for a given blob must be the same length.
sourceUrl - The url to the blob that will be the source of the copy. A source blob in the same storage account can be authenticated via Shared Key. However, if the source is a blob in another account, the source blob must either be public or must be authenticated via a shared access signature. If the source blob is public, no authentication is required to perform the operation.
sourceRange - BlobRange
sourceContentMd5 - An MD5 hash of the block content. This hash is used to verify the integrity of the block during transport. When this header is specified, the storage service compares the hash of the content that has arrived with this header value. Note that this MD5 hash is not stored with the blob. If the two hashes do not match, the operation will fail.
leaseId - The lease ID that the active lease on the blob must match.
sourceRequestConditions - BlobRequestConditions
timeout - An optional timeout value beyond which a RuntimeException will be raised.
context - Additional context that is passed through the Http pipeline during the service call.

Returns:

A response containing status code and HTTP headers

stageBlockWithResponse

public Response stageBlockWithResponse(BlockBlobStageBlockOptions options, Duration timeout, Context context)

Uploads the specified block to the block blob's "staging area" to be later committed by a call to commitBlockList. For more information, see the Azure Docs.

Code Samples

Context context = new Context("key", "value");
 BinaryData binaryData = BinaryData.fromStream(data, length);
 BlockBlobStageBlockOptions options = new BlockBlobStageBlockOptions(base64BlockId, binaryData)
     .setContentMd5(md5)
     .setLeaseId(leaseId);
 System.out.printf("Staging block completed with status %d%n",
     client.stageBlockWithResponse(options, timeout, context).getStatusCode());

Parameters:

timeout - An optional timeout value beyond which a RuntimeException will be raised.
context - Additional context that is passed through the Http pipeline during the service call.

Returns:

A response containing status code and HTTP headers

stageBlockWithResponse

public Response stageBlockWithResponse(String base64BlockId, InputStream data, long length, byte[] contentMd5, String leaseId, Duration timeout, Context context)

Uploads the specified block to the block blob's "staging area" to be later committed by a call to commitBlockList. For more information, see the Azure Docs.

Code Samples

Context context = new Context("key", "value");
 System.out.printf("Staging block completed with status %d%n",
     client.stageBlockWithResponse(base64BlockId, data, length, md5, leaseId, timeout, context).getStatusCode());

Parameters:

base64BlockId - A Base64 encoded String that specifies the ID for this block. Note that all block ids for a given blob must be the same length.
data - The data to write to the block. The data must be markable. This is in order to support retries. If the data is not markable, consider using getBlobOutputStream() and writing to the returned OutputStream. Alternatively, consider wrapping your data source in a BufferedInputStream 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 the InputStream.
contentMd5 - An MD5 hash of the block content. This hash is used to verify the integrity of the block during transport. When this header is specified, the storage service compares the hash of the content that has arrived with this header value. Note that this MD5 hash is not stored with the blob. If the two hashes do not match, the operation will fail.
leaseId - The lease ID the active lease on the blob must match.
timeout - An optional timeout value beyond which a RuntimeException will be raised.
context - Additional context that is passed through the Http pipeline during the service call.

Returns:

A response containing status code and HTTP headers

upload

public BlockBlobItem upload(BinaryData data)

Creates a new block blob. By default, this method will not overwrite an existing blob. Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with PutBlob; the content of the existing blob is overwritten with the new content. To perform a partial update of a block blob's, use PutBlock and PutBlockList. For more information, see the Azure Docs.

Code Samples

BinaryData binaryData = BinaryData.fromStream(data, length);
 System.out.printf("Uploaded BlockBlob MD5 is %s%n",
     Base64.getEncoder().encodeToString(client.upload(binaryData).getContentMd5()));

Parameters:

data - The data to write to the block. Note that this BinaryData must have defined length and must be replayable if retries are enabled (the default), see BinaryData#isReplayable().

Returns:

The information of the uploaded block blob.

upload

public BlockBlobItem upload(BinaryData data, boolean overwrite)

Creates a new block blob, or updates the content of an existing block blob. Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with PutBlob; the content of the existing blob is overwritten with the new content. To perform a partial update of a block blob's, use PutBlock and PutBlockList. For more information, see the Azure Docs.

Code Samples

boolean overwrite = false;
 BinaryData binaryData = BinaryData.fromStream(data, length);
 System.out.printf("Uploaded BlockBlob MD5 is %s%n",
     Base64.getEncoder().encodeToString(client.upload(binaryData, overwrite).getContentMd5()));

Parameters:

data - The data to write to the block. Note that this BinaryData must have defined length and must be replayable if retries are enabled (the default), see BinaryData#isReplayable().
overwrite - Whether to overwrite, should data exist on the blob.

Returns:

The information of the uploaded block blob.

upload

public BlockBlobItem upload(InputStream data, long length)

Creates a new block blob. By default, this method will not overwrite an existing blob. Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with PutBlob; the content of the existing blob is overwritten with the new content. To perform a partial update of a block blob's, use PutBlock and PutBlockList. For more information, see the Azure Docs.

Code Samples

System.out.printf("Uploaded BlockBlob MD5 is %s%n",
     Base64.getEncoder().encodeToString(client.upload(data, length).getContentMd5()));

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 using getBlobOutputStream() and writing to the returned OutputStream. Alternatively, consider wrapping your data source in a BufferedInputStream 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 the InputStream.

Returns:

The information of the uploaded block blob.

upload

public BlockBlobItem upload(InputStream data, long length, boolean overwrite)

Creates a new block blob, or updates the content of an existing block blob. Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with PutBlob; the content of the existing blob is overwritten with the new content. To perform a partial update of a block blob's, use PutBlock and PutBlockList. For more information, see the Azure Docs.

Code Samples

boolean overwrite = false;
 System.out.printf("Uploaded BlockBlob MD5 is %s%n",
     Base64.getEncoder().encodeToString(client.upload(data, length, overwrite).getContentMd5()));

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 using getBlobOutputStream() and writing to the returned OutputStream. Alternatively, consider wrapping your data source in a BufferedInputStream 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 the InputStream.
overwrite - Whether to overwrite, should data exist on the blob.

Returns:

The information of the uploaded block blob.

uploadFromUrl

public BlockBlobItem uploadFromUrl(String sourceUrl)

Creates a new block blob, or updates the content of an existing block blob.

Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with PutBlobFromUrl; the content of the existing blob is overwritten with the new content. For more information, see the Azure Docs.

Code Samples

System.out.printf("Uploaded BlockBlob from URL, MD5 is %s%n",
     Base64.getEncoder().encodeToString(client.uploadFromUrl(sourceUrl).getContentMd5()));

Parameters:

sourceUrl - The source URL to upload from.

Returns:

The information of the uploaded block blob.

uploadFromUrl

public BlockBlobItem uploadFromUrl(String sourceUrl, boolean overwrite)

Creates a new block blob, or updates the content of an existing block blob.

Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with PutBlobFromUrl; the content of the existing blob is overwritten with the new content. For more information, see the Azure Docs.

Code Samples

boolean overwrite = false;
 System.out.printf("Uploaded BlockBlob from URL, MD5 is %s%n",
     Base64.getEncoder().encodeToString(client.uploadFromUrl(sourceUrl, overwrite).getContentMd5()));

Parameters:

sourceUrl - The source URL to upload from.
overwrite - Whether to overwrite, should data exist on the blob.

Returns:

The information of the uploaded block blob.

uploadFromUrlWithResponse

public Response uploadFromUrlWithResponse(BlobUploadFromUrlOptions options, Duration timeout, Context context)

Creates a new block blob, or updates the content of an existing block blob.

Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with PutBlobFromUrl; the content of the existing blob is overwritten with the new content. For more information, see the Azure Docs.

To avoid overwriting, pass "*" to setIfNoneMatch(String ifNoneMatch).

Code Samples

BlobHttpHeaders headers = new BlobHttpHeaders()
     .setContentMd5(MessageDigest.getInstance("MD5").digest("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");

 byte[] md5 = MessageDigest.getInstance("MD5").digest("data".getBytes(StandardCharsets.UTF_8));

 BlobRequestConditions requestConditions = new BlobRequestConditions()
     .setLeaseId(leaseId)
     .setIfUnmodifiedSince(OffsetDateTime.now().minusDays(3));
 Context context = new Context("key", "value");

 System.out.printf("Uploaded BlockBlob MD5 is %s%n", Base64.getEncoder()
     .encodeToString(client.uploadFromUrlWithResponse(new BlobUploadFromUrlOptions(sourceUrl)
         .setHeaders(headers).setTags(tags).setTier(AccessTier.HOT).setContentMd5(md5)
         .setDestinationRequestConditions(requestConditions), timeout, context)
         .getValue()
         .getContentMd5()));

Parameters:

timeout - An optional timeout value beyond which a RuntimeException will be raised.
context - Additional context that is passed through the Http pipeline during the service call.

Returns:

The information of the uploaded block blob.

uploadWithResponse

public Response uploadWithResponse(BlockBlobSimpleUploadOptions options, Duration timeout, Context context)

Creates a new block blob, or updates the content of an existing block blob. Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with PutBlob; the content of the existing blob is overwritten with the new content. To perform a partial update of a block blob's, use PutBlock and PutBlockList. For more information, see the Azure Docs.

To avoid overwriting, pass "*" to setIfNoneMatch(String ifNoneMatch).

Code Samples

BlobHttpHeaders headers = new BlobHttpHeaders()
     .setContentMd5(MessageDigest.getInstance("MD5").digest("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");

 byte[] md5 = MessageDigest.getInstance("MD5").digest("data".getBytes(StandardCharsets.UTF_8));

 BlobRequestConditions requestConditions = new BlobRequestConditions()
     .setLeaseId(leaseId)
     .setIfUnmodifiedSince(OffsetDateTime.now().minusDays(3));
 Context context = new Context("key", "value");

 System.out.printf("Uploaded BlockBlob MD5 is %s%n", Base64.getEncoder()
     .encodeToString(client.uploadWithResponse(new BlockBlobSimpleUploadOptions(data, length)
         .setHeaders(headers).setMetadata(metadata).setTags(tags).setTier(AccessTier.HOT).setContentMd5(md5)
         .setRequestConditions(requestConditions), timeout, context)
         .getValue()
         .getContentMd5()));

Parameters:

timeout - An optional timeout value beyond which a RuntimeException will be raised.
context - Additional context that is passed through the Http pipeline during the service call.

Returns:

The information of the uploaded block blob.

uploadWithResponse

public Response uploadWithResponse(InputStream data, long length, BlobHttpHeaders headers, Map metadata, AccessTier tier, byte[] contentMd5, BlobRequestConditions requestConditions, Duration timeout, Context context)

Creates a new block blob, or updates the content of an existing block blob. Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with PutBlob; the content of the existing blob is overwritten with the new content. To perform a partial update of a block blob's, use PutBlock and PutBlockList. For more information, see the Azure Docs.

To avoid overwriting, pass "*" to setIfNoneMatch(String ifNoneMatch).

Code Samples

BlobHttpHeaders headers = new BlobHttpHeaders()
     .setContentMd5(MessageDigest.getInstance("MD5").digest("data".getBytes(StandardCharsets.UTF_8)))
     .setContentLanguage("en-US")
     .setContentType("binary");

 Map<String, String> metadata = Collections.singletonMap("metadata", "value");

 byte[] md5 = MessageDigest.getInstance("MD5").digest("data".getBytes(StandardCharsets.UTF_8));

 BlobRequestConditions requestConditions = new BlobRequestConditions()
     .setLeaseId(leaseId)
     .setIfUnmodifiedSince(OffsetDateTime.now().minusDays(3));
 Context context = new Context("key", "value");

 System.out.printf("Uploaded BlockBlob MD5 is %s%n", Base64.getEncoder()
     .encodeToString(client.uploadWithResponse(data, length, headers, metadata, AccessTier.HOT, md5,
         requestConditions, timeout, context)
         .getValue()
         .getContentMd5()));

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 using getBlobOutputStream() and writing to the returned OutputStream. Alternatively, consider wrapping your data source in a BufferedInputStream 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 the InputStream.
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.
contentMd5 - An MD5 hash of the block content. This hash is used to verify the integrity of the block during transport. When this header is specified, the storage service compares the hash of the content that has arrived with this header value. Note that this MD5 hash is not stored with the blob. If the two hashes do not match, the operation will fail.
requestConditions - BlobRequestConditions
timeout - An optional timeout value beyond which a RuntimeException will be raised.
context - Additional context that is passed through the Http pipeline during the service call.

Returns:

The information of the uploaded block blob.

Applies to