你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

BlockBlobClient 类

public final class BlockBlobClient
extends BlobClientBase

客户端到块 Blob。 它只能通过 或 方法getBlockBlobClient()实例化SpecializedBlobClientBuilder。 此类不保留有关特定 Blob 的任何状态,而是向服务上的资源发送适当请求的一种便捷方式。

有关详细信息,请参阅 Azure Docs

字段摘要

修饰符和类型 字段和描述
static final int MAX_BLOCKS

指示块 Blob 中允许的最大块数。

static final int MAX_STAGE_BLOCK_BYTES

已放弃

指示在调用阶段块时可以发送的最大字节数。

static final long MAX_STAGE_BLOCK_BYTES_LONG

指示在调用阶段块时可以发送的最大字节数。

static final int MAX_UPLOAD_BLOB_BYTES

已放弃

指示在上传调用中可以发送的最大字节数。

static final long MAX_UPLOAD_BLOB_BYTES_LONG

指示在上传调用中可以发送的最大字节数。

方法摘要

修饰符和类型 方法和描述
BlockBlobItem commitBlockList(List<String> base64BlockIds)

通过指定要构成 Blob 的块 ID 列表来写入 Blob。

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

通过指定要构成 Blob 的块 ID 列表来写入 Blob。

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

通过指定要构成 Blob 的块 ID 列表来写入 Blob。

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

通过指定要构成 Blob 的块 ID 列表来写入 Blob。

BlobOutputStream getBlobOutputStream()

创建并打开输出流,将数据写入块 Blob。

BlobOutputStream getBlobOutputStream(boolean overwrite)

创建并打开输出流,将数据写入块 Blob。

BlobOutputStream getBlobOutputStream(BlobRequestConditions requestConditions)

创建并打开输出流,将数据写入块 Blob。

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

创建并打开输出流,将数据写入块 Blob。

BlobOutputStream getBlobOutputStream(BlockBlobOutputStreamOptions options)

创建并打开输出流,将数据写入块 Blob。

BlobOutputStream getBlobOutputStream(BlockBlobOutputStreamOptions options, Context context)

创建并打开输出流,将数据写入块 Blob。

BlockBlobClient getCustomerProvidedKeyClient(CustomerProvidedKey customerProvidedKey)

使用指定的 BlockBlobClient 创建一个新的 customerProvidedKey

BlockBlobClient getEncryptionScopeClient(String encryptionScope)

使用指定的 BlockBlobClient 创建一个新的 encryptionScope

BlockList listBlocks(BlockListType listType)

使用指定的块列表筛选器返回已作为块 Blob 的一部分上传的块的列表。

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

使用指定的阻止列表筛选器返回已作为块 Blob 的一部分上传的块列表。

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

使用指定的阻止列表筛选器返回已作为块 Blob 的一部分上传的块列表。

SeekableByteChannel openSeekableByteChannelWrite(BlockBlobSeekableByteChannelWriteOptions options)

在只写模式下打开可查找字节通道以上传 Blob。

void stageBlock(String base64BlockId, BinaryData data)

将指定的块上传到块 Blob 的“暂存区域”,以便稍后通过调用提交列表提交。

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

将指定的块上传到块 Blob 的“暂存区域”,以便稍后通过调用提交列表提交。

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

创建一个新块,该块要作为 Blob 的一部分提交,其中的内容从 URL 读取。

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

创建一个新块,该块要作为 Blob 的一部分提交,其中的内容从 URL 读取。

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

创建一个新块,该块要作为 Blob 的一部分提交,其中的内容从 URL 读取。

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

将指定的块上传到块 Blob 的“暂存区域”,以便稍后通过调用提交列表提交。

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

将指定的块上传到块 Blob 的“暂存区域”,以便稍后通过调用提交列表提交。

BlockBlobItem upload(BinaryData data)

创建新的块 Blob。

BlockBlobItem upload(BinaryData data, boolean overwrite)

创建新的块 Blob,或更新现有块 Blob 的内容。

BlockBlobItem upload(InputStream data, long length)

创建新的块 Blob。

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

创建新的块 Blob,或更新现有块 Blob 的内容。

BlockBlobItem uploadFromUrl(String sourceUrl)

创建新的块 Blob,或更新现有块 Blob 的内容。

BlockBlobItem uploadFromUrl(String sourceUrl, boolean overwrite)

创建新的块 Blob,或更新现有块 Blob 的内容。

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

创建新的块 Blob,或更新现有块 Blob 的内容。

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

创建新的块 Blob,或更新现有块 Blob 的内容。

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

创建新的块 Blob,或更新现有块 Blob 的内容。

方法继承自 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 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

方法继承自 java.lang.Object

字段详细信息

MAX_BLOCKS

public static final int MAX_BLOCKS

指示块 Blob 中允许的最大块数。

MAX_STAGE_BLOCK_BYTES

@Deprecated
public static final int MAX_STAGE_BLOCK_BYTES

已放弃

指示在调用 stageBlock 时可以发送的最大字节数。

MAX_STAGE_BLOCK_BYTES_LONG

public static final long MAX_STAGE_BLOCK_BYTES_LONG

指示在调用 stageBlock 时可以发送的最大字节数。

MAX_UPLOAD_BLOB_BYTES

@Deprecated
public static final int MAX_UPLOAD_BLOB_BYTES

已放弃

指示在上传调用中可以发送的最大字节数。

MAX_UPLOAD_BLOB_BYTES_LONG

public static final long MAX_UPLOAD_BLOB_BYTES_LONG

指示在上传调用中可以发送的最大字节数。

方法详细信息

commitBlockList

public BlockBlobItem commitBlockList(List base64BlockIds)

通过指定要构成 Blob 的块 ID 列表来写入 Blob。 为了作为 Blob 的一部分进行写入,块必须在之前的 stageBlock 操作中成功写入服务器。 可以调用 commitBlockList 来更新 Blob,方法是仅上传已更改的块,然后将新的块和现有块一起提交。 未在阻止列表中指定并永久删除的任何块。 有关详细信息,请参阅 Azure Docs

示例代码

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

参数:

base64BlockIds - base64 编码 String的列表,指定要提交的块 ID。

返回:

块 Blob 的信息。

commitBlockList

public BlockBlobItem commitBlockList(List base64BlockIds, boolean overwrite)

通过指定要构成 Blob 的块 ID 列表来写入 Blob。 为了作为 Blob 的一部分进行写入,块必须在之前的 stageBlock 操作中成功写入服务器。 可以调用 commitBlockList 来更新 Blob,方法是仅上传已更改的块,然后将新的块和现有块一起提交。 未在阻止列表中指定并永久删除的任何块。 有关详细信息,请参阅 Azure Docs

示例代码

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

参数:

base64BlockIds - base64 编码 String的列表,指定要提交的块 ID。
overwrite - 是否覆盖 Blob 上是否存在数据。

返回:

块 Blob 的信息。

commitBlockListWithResponse

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

通过指定要构成 Blob 的块 ID 列表来写入 Blob。 为了作为 Blob 的一部分进行写入,块必须在之前的 stageBlock 操作中成功写入服务器。 可以调用 commitBlockList 来更新 Blob,方法是仅上传已更改的块,然后将新的块和现有块一起提交。 未在阻止列表中指定并永久删除的任何块。 有关详细信息,请参阅 Azure Docs

若要避免覆盖,请将“*”传递给 setIfNoneMatch(String ifNoneMatch)

示例代码

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());

参数:

timeout - 一个可选的超时值,超过该值 RuntimeException 将引发 。
context - 在服务调用期间通过 Http 管道传递的其他上下文。

返回:

块 Blob 的信息。

commitBlockListWithResponse

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

通过指定要构成 Blob 的块 ID 列表来写入 Blob。 为了作为 Blob 的一部分进行写入,块必须在之前的 stageBlock 操作中成功写入服务器。 可以调用 commitBlockList 来更新 Blob,方法是仅上传已更改的块,然后将新的块和现有块一起提交。 未在阻止列表中指定并永久删除的任何块。 有关详细信息,请参阅 Azure Docs

若要避免覆盖,请将“*”传递给 setIfNoneMatch(String ifNoneMatch)

示例代码

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());

参数:

base64BlockIds - base64 编码 String的列表,指定要提交的块 ID。
headers - BlobHttpHeaders
metadata - 要与 Blob 关联的元数据。 如果任何元数据键或值中都有前导或尾随空格,则必须将其删除或编码。
tier - AccessTier 用于目标 Blob。
requestConditions - BlobRequestConditions
timeout - 一个可选的超时值,超过该值 RuntimeException 将引发 。
context - 在服务调用期间通过 Http 管道传递的其他上下文。

返回:

块 Blob 的信息。

getBlobOutputStream

public BlobOutputStream getBlobOutputStream()

创建并打开输出流,将数据写入块 Blob。

注意:建议使用大小合理的缓冲区调用写入,为此,可以使用 BufferedOutputStream 包装下面获取的 BlobOutputStream

返回:

BlobOutputStream用于将数据写入 Blob 的 对象。

getBlobOutputStream

public BlobOutputStream getBlobOutputStream(boolean overwrite)

创建并打开输出流,将数据写入块 Blob。

注意:建议使用大小合理的缓冲区调用写入,为此,可以使用 BufferedOutputStream 包装下面获取的 BlobOutputStream

参数:

overwrite - 是否覆盖 Blob 上是否存在数据。

返回:

BlobOutputStream用于将数据写入 Blob 的 对象。

getBlobOutputStream

public BlobOutputStream getBlobOutputStream(BlobRequestConditions requestConditions)

创建并打开输出流,将数据写入块 Blob。 如果服务中已存在 Blob,则会覆盖该 Blob。

若要避免覆盖,请将“*”传递给 setIfNoneMatch(String ifNoneMatch)

注意:建议使用大小合理的缓冲区调用写入,为此,可以使用 BufferedOutputStream 包装下面获取的 BlobOutputStream

参数:

requestConditions - 一个 BlobRequestConditions 对象,表示 Blob 的访问条件。

返回:

BlobOutputStream用于将数据写入 Blob 的 对象。

getBlobOutputStream

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

创建并打开输出流,将数据写入块 Blob。 如果服务中已存在 Blob,则会覆盖该 Blob。

若要避免覆盖,请将“*”传递给 setIfNoneMatch(String ifNoneMatch)

注意:建议使用大小合理的缓冲区调用写入,为此,可以使用 BufferedOutputStream 包装下面获取的 BlobOutputStream

参数:

parallelTransferOptions - ParallelTransferOptions 用于配置缓冲上传。
headers - BlobHttpHeaders
metadata - 要与 Blob 关联的元数据。 如果任何元数据键或值中都有前导或尾随空格,则必须将其删除或编码。
tier - AccessTier 用于目标 Blob。
requestConditions - BlobRequestConditions

返回:

BlobOutputStream用于将数据写入 Blob 的 对象。

getBlobOutputStream

public BlobOutputStream getBlobOutputStream(BlockBlobOutputStreamOptions options)

创建并打开输出流,将数据写入块 Blob。 如果服务中已存在 Blob,则会覆盖该 Blob。

若要避免覆盖,请将“*”传递给 setIfNoneMatch(String ifNoneMatch)

注意:建议使用大小合理的缓冲区调用写入,为此,可以使用 BufferedOutputStream 包装下面获取的 BlobOutputStream

参数:

返回:

BlobOutputStream用于将数据写入 Blob 的 对象。

getBlobOutputStream

public BlobOutputStream getBlobOutputStream(BlockBlobOutputStreamOptions options, Context context)

创建并打开输出流,将数据写入块 Blob。 如果服务中已存在 Blob,则会覆盖该 Blob。

若要避免覆盖,请将“*”传递给 setIfNoneMatch(String ifNoneMatch)

注意:建议使用大小合理的缓冲区调用写入,为此,可以使用 BufferedOutputStream 包装下面获取的 BlobOutputStream

参数:

context - 在服务调用期间通过 Http 管道传递的其他上下文。

返回:

BlobOutputStream用于将数据写入 Blob 的 对象。

getCustomerProvidedKeyClient

public BlockBlobClient getCustomerProvidedKeyClient(CustomerProvidedKey customerProvidedKey)

使用指定的 BlockBlobClient 创建一个新的 customerProvidedKey

替代:

BlockBlobClient.getCustomerProvidedKeyClient(CustomerProvidedKey customerProvidedKey)

参数:

customerProvidedKey - CustomerProvidedKey对于 Blob,传递null以使用任何客户提供的密钥。

返回:

具有 BlockBlobClient 指定 customerProvidedKey的 。

getEncryptionScopeClient

public BlockBlobClient getEncryptionScopeClient(String encryptionScope)

使用指定的 BlockBlobClient 创建一个新的 encryptionScope

替代:

BlockBlobClient.getEncryptionScopeClient(String encryptionScope)

参数:

encryptionScope - Blob 的加密范围,传递 null 为不使用加密范围。

返回:

具有 BlockBlobClient 指定 encryptionScope的 。

listBlocks

public BlockList listBlocks(BlockListType listType)

使用指定的块列表筛选器返回已作为块 Blob 的一部分上传的块的列表。 有关详细信息,请参阅 Azure Docs

示例代码

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()));

参数:

listType - 指定要返回的块类型。

返回:

块列表。

listBlocksWithResponse

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

使用指定的块列表筛选器返回已作为块 Blob 的一部分上传的块的列表。 有关详细信息,请参阅 Azure Docs

示例代码

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()));

参数:

listType - 指定要返回的块类型。
leaseId - Blob 上的活动租约必须匹配的租约 ID。
timeout - 一个可选的超时值,超过该值 RuntimeException 将引发 。
context - 在服务调用期间通过 Http 管道传递的其他上下文。

返回:

块列表。

listBlocksWithResponse

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

使用指定的阻止列表筛选器返回已作为块 Blob 的一部分上传的块列表。 有关详细信息,请参阅 Azure Docs

示例代码

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()));

参数:

timeout - 一个可选的超时值,超过该值 RuntimeException 将引发 。
context - 在服务调用期间通过 Http 管道传递的其他上下文。

返回:

块列表。

openSeekableByteChannelWrite

public SeekableByteChannel openSeekableByteChannelWrite(BlockBlobSeekableByteChannelWriteOptions options)

在只写模式下打开可查找字节通道以上传 Blob。

参数:

返回:

一个 SeekableByteChannel 对象,表示要用于写入 Blob 的通道。

stageBlock

public void stageBlock(String base64BlockId, BinaryData data)

将指定的块上传到块 Blob 的“暂存区域”,以便稍后通过调用 commitBlockList 提交。 有关详细信息,请参阅 Azure Docs

示例代码

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

参数:

base64BlockId - 一个 Base64 编码 String 的 ,指定此块的 ID。 请注意,给定 Blob 的所有块 ID 必须具有相同的长度。
data - 要写入块的数据。 请注意,如果启用重试 (默认) ,则此 BinaryData 长度必须已定义,并且必须可重播,请参阅 BinaryData#isReplayable()

stageBlock

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

将指定的块上传到块 Blob 的“暂存区域”,以便稍后通过调用 commitBlockList 提交。 有关详细信息,请参阅 Azure Docs

示例代码

client.stageBlock(base64BlockId, data, length);

参数:

base64BlockId - 一个 Base64 编码 String 的 ,指定此块的 ID。 请注意,给定 Blob 的所有块 ID 必须具有相同的长度。
data - 要写入块的数据。 数据必须是可标记的。 这是为了支持重试。 如果数据不可标记,请考虑使用 getBlobOutputStream() 并写入返回的 OutputStream。 或者,请考虑将数据源包装在 BufferedInputStream 中以添加标记支持。
length - 数据的确切长度。 此值必须与 中提供的数据的长度精确匹配,这一 InputStream点很重要。

stageBlockFromUrl

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

创建一个新块,该块要作为 Blob 的一部分提交,其中的内容从 URL 读取。 有关详细信息,请参阅 Azure Docs

示例代码

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

参数:

base64BlockId - 一个 Base64 编码 String 的 ,指定此块的 ID。 请注意,给定 Blob 的所有块 ID 必须具有相同的长度。
sourceUrl - 将成为副本源的 Blob 的 URL。 同一存储帐户中的源 Blob 可以通过共享密钥进行身份验证。 但是,如果源是另一个帐户中的 Blob,则源 blob 必须是公共的,或者必须通过共享访问签名进行身份验证。 如果源 Blob 是公共的,则无需身份验证即可执行该操作。
sourceRange - BlobRange

stageBlockFromUrlWithResponse

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

创建一个新块,该块要作为 Blob 的一部分提交,其中的内容从 URL 读取。 有关详细信息,请参阅 Azure Docs

示例代码

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());

参数:

options - 操作的参数
timeout - 一个可选的超时值,超过该值 RuntimeException 将引发 。
context - 在服务调用期间通过 Http 管道传递的其他上下文。

返回:

包含状态代码和 HTTP 标头的响应

stageBlockFromUrlWithResponse

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

创建一个新块,该块要作为 Blob 的一部分提交,其中的内容从 URL 读取。 有关详细信息,请参阅 Azure Docs

示例代码

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());

参数:

base64BlockId - 一个 Base64 编码 String 的 ,指定此块的 ID。 请注意,给定 Blob 的所有块 ID 必须具有相同的长度。
sourceUrl - 将成为副本源的 Blob 的 URL。 同一存储帐户中的源 Blob 可以通过共享密钥进行身份验证。 但是,如果源是另一个帐户中的 Blob,则源 blob 必须是公共的,或者必须通过共享访问签名进行身份验证。 如果源 Blob 是公共的,则无需身份验证即可执行该操作。
sourceRange - BlobRange
sourceContentMd5 - 块内容的 MD5 哈希值。 此哈希值用于在传输期间验证块的完整性。 指定此标头时,存储服务会对已到达内容的哈希值与此标头值进行比较。 请注意,此 MD5 哈希值不与 Blob 一起存储。 如果两个哈希不匹配,则操作将失败。
leaseId - Blob 上的活动租约必须匹配的租约 ID。
sourceRequestConditions - BlobRequestConditions
timeout - 一个可选的超时值,超过该值 RuntimeException 将引发 。
context - 在服务调用期间通过 Http 管道传递的其他上下文。

返回:

包含状态代码和 HTTP 标头的响应

stageBlockWithResponse

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

将指定的块上传到块 Blob 的“暂存区域”,以便稍后通过调用 commitBlockList 提交。 有关详细信息,请参阅 Azure Docs

示例代码

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());

参数:

timeout - 一个可选的超时值,超过该值 RuntimeException 将引发 。
context - 在服务调用期间通过 Http 管道传递的其他上下文。

返回:

包含状态代码和 HTTP 标头的响应

stageBlockWithResponse

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

将指定的块上传到块 Blob 的“暂存区域”,以便稍后通过调用 commitBlockList 提交。 有关详细信息,请参阅 Azure Docs

示例代码

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());

参数:

base64BlockId - 一个 Base64 编码 String 的 ,指定此块的 ID。 请注意,给定 Blob 的所有块 ID 必须具有相同的长度。
data - 要写入块的数据。 数据必须是可标记的。 这是为了支持重试。 如果数据不可标记,请考虑使用 getBlobOutputStream() 并写入返回的 OutputStream。 或者,请考虑将数据源包装在 BufferedInputStream 中以添加标记支持。
length - 数据的确切长度。 此值必须与 中提供的数据的长度精确匹配,这一 InputStream点很重要。
contentMd5 - 块内容的 MD5 哈希值。 此哈希值用于在传输期间验证块的完整性。 指定此标头时,存储服务会对已到达内容的哈希值与此标头值进行比较。 请注意,此 MD5 哈希值不与 Blob 一起存储。 如果两个哈希不匹配,则操作将失败。
leaseId - Blob 上的活动租约必须匹配的租约 ID。
timeout - 一个可选的超时值,超过该值 RuntimeException 将引发 。
context - 在服务调用期间通过 Http 管道传递的其他上下文。

返回:

包含状态代码和 HTTP 标头的响应

upload

public BlockBlobItem upload(BinaryData data)

创建新的块 Blob。 默认情况下,此方法不会覆盖现有 Blob。 更新现有块 Blob 会覆盖该 Blob 的所有现有元数据。 PutBlob 不支持部分更新;现有 Blob 的内容将被新内容覆盖。 若要执行块 Blob 的部分更新,请使用 PutBlock 和 PutBlockList。 有关详细信息,请参阅 Azure Docs

示例代码

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

参数:

data - 要写入块的数据。 请注意,如果启用重试 (默认) ,则此 BinaryData 长度必须已定义,并且必须可重播,请参阅 BinaryData#isReplayable()

返回:

上传的块 Blob 的信息。

upload

public BlockBlobItem upload(BinaryData data, boolean overwrite)

创建新的块 Blob,或更新现有块 Blob 的内容。 更新现有块 Blob 会覆盖该 Blob 的所有现有元数据。 PutBlob 不支持部分更新;现有 Blob 的内容将被新内容覆盖。 若要执行块 Blob 的部分更新,请使用 PutBlock 和 PutBlockList。 有关详细信息,请参阅 Azure Docs

示例代码

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()));

参数:

data - 要写入块的数据。 请注意,如果启用重试 (默认) ,则此 BinaryData 长度必须已定义,并且必须可重播,请参阅 BinaryData#isReplayable()
overwrite - 是否覆盖 Blob 上是否存在数据。

返回:

上传的块 Blob 的信息。

upload

public BlockBlobItem upload(InputStream data, long length)

创建新的块 Blob。 默认情况下,此方法不会覆盖现有 Blob。 更新现有块 Blob 会覆盖该 Blob 的所有现有元数据。 PutBlob 不支持部分更新;现有 Blob 的内容将被新内容覆盖。 若要执行块 Blob 的部分更新,请使用 PutBlock 和 PutBlockList。 有关详细信息,请参阅 Azure Docs

示例代码

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

参数:

data - 要写入 Blob 的数据。 数据必须是可标记的。 这是为了支持重试。 如果数据不可标记,请考虑使用 getBlobOutputStream() 并写入返回的 OutputStream。 或者,请考虑将数据源包装在 BufferedInputStream 中以添加标记支持。
length - 数据的确切长度。 此值必须与 中提供的数据的长度精确匹配,这一 InputStream点很重要。

返回:

上传的块 Blob 的信息。

upload

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

创建新的块 Blob,或更新现有块 Blob 的内容。 更新现有块 Blob 会覆盖该 Blob 的所有现有元数据。 PutBlob 不支持部分更新;现有 Blob 的内容将被新内容覆盖。 若要执行块 Blob 的部分更新,请使用 PutBlock 和 PutBlockList。 有关详细信息,请参阅 Azure Docs

示例代码

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

参数:

data - 要写入 Blob 的数据。 数据必须是可标记的。 这是为了支持重试。 如果数据不可标记,请考虑使用 getBlobOutputStream() 并写入返回的 OutputStream。 或者,请考虑将数据源包装在 BufferedInputStream 中以添加标记支持。
length - 数据的确切长度。 此值必须与 中提供的数据的长度精确匹配,这一 InputStream点很重要。
overwrite - 是否覆盖 Blob 上是否存在数据。

返回:

上传的块 Blob 的信息。

uploadFromUrl

public BlockBlobItem uploadFromUrl(String sourceUrl)

创建新的块 Blob,或更新现有块 Blob 的内容。

更新现有块 Blob 会覆盖该 Blob 的所有现有元数据。 PutBlobFromUrl 不支持部分更新;现有 Blob 的内容将被新内容覆盖。 有关详细信息,请参阅 Azure Docs

示例代码

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

参数:

sourceUrl - 要从其上传的源 URL。

返回:

上传的块 Blob 的信息。

uploadFromUrl

public BlockBlobItem uploadFromUrl(String sourceUrl, boolean overwrite)

创建新的块 Blob,或更新现有块 Blob 的内容。

更新现有块 Blob 会覆盖该 Blob 的所有现有元数据。 PutBlobFromUrl 不支持部分更新;现有 Blob 的内容将被新内容覆盖。 有关详细信息,请参阅 Azure Docs

示例代码

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

参数:

sourceUrl - 要从其上传的源 URL。
overwrite - 是否覆盖 Blob 上是否存在数据。

返回:

上传的块 Blob 的信息。

uploadFromUrlWithResponse

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

创建新的块 Blob,或更新现有块 Blob 的内容。

更新现有块 Blob 会覆盖该 Blob 的所有现有元数据。 PutBlobFromUrl 不支持部分更新;现有 Blob 的内容将被新内容覆盖。 有关详细信息,请参阅 Azure Docs

若要避免覆盖,请将“*”传递给 setIfNoneMatch(String ifNoneMatch)

示例代码

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()));

参数:

timeout - 一个可选的超时值,超过该值 RuntimeException 将引发 。
context - 在服务调用期间通过 Http 管道传递的其他上下文。

返回:

上传的块 Blob 的信息。

uploadWithResponse

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

创建新的块 Blob,或更新现有块 Blob 的内容。 更新现有块 Blob 会覆盖该 Blob 的所有现有元数据。 PutBlob 不支持部分更新;现有 Blob 的内容将被新内容覆盖。 若要执行块 Blob 的部分更新,请使用 PutBlock 和 PutBlockList。 有关详细信息,请参阅 Azure Docs

若要避免覆盖,请将“*”传递给 setIfNoneMatch(String ifNoneMatch)

示例代码

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()));

参数:

timeout - 一个可选的超时值,超过该值 RuntimeException 将引发 。
context - 在服务调用期间通过 Http 管道传递的其他上下文。

返回:

上传的块 Blob 的信息。

uploadWithResponse

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

创建新的块 Blob,或更新现有块 Blob 的内容。 更新现有块 Blob 会覆盖该 Blob 的所有现有元数据。 PutBlob 不支持部分更新;现有 Blob 的内容将被新内容覆盖。 若要执行块 Blob 的部分更新,请使用 PutBlock 和 PutBlockList。 有关详细信息,请参阅 Azure Docs

若要避免覆盖,请将“*”传递给 setIfNoneMatch(String ifNoneMatch)

示例代码

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()));

参数:

data - 要写入 Blob 的数据。 数据必须是可标记的。 这是为了支持重试。 如果数据不可标记,请考虑使用 getBlobOutputStream() 并写入返回的 OutputStream。 或者,请考虑将数据源包装在 BufferedInputStream 中以添加标记支持。
length - 数据的确切长度。 此值必须与 中 InputStream提供的数据的长度精确匹配,
headers - BlobHttpHeaders
metadata - 要与 Blob 关联的元数据。 如果任何元数据键或值中都有前导或尾随空格,则必须将其删除或编码。
tier - AccessTier 用于目标 Blob。
contentMd5 - 块内容的 MD5 哈希值。 此哈希值用于在传输期间验证块的完整性。 指定此标头时,存储服务会对已到达内容的哈希值与此标头值进行比较。 请注意,此 MD5 哈希值不与 Blob 一起存储。 如果两个哈希不匹配,则操作将失败。
requestConditions - BlobRequestConditions
timeout - 一个可选的超时值,超过该值 RuntimeException 将引发 。
context - 在服务调用期间通过 Http 管道传递的其他上下文。

返回:

上传的块 Blob 的信息。

适用于