你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
AppendBlobAsyncClient 类
- java.
lang. Object - com.
azure. storage. blob. specialized. BlobAsyncClientBase - com.
azure. storage. blob. specialized. AppendBlobAsyncClient
- com.
- com.
public final class AppendBlobAsyncClient
extends BlobAsyncClientBase
客户端到追加 Blob。 它只能通过 或 方法getAppendBlobAsyncClient()实例化buildAppendBlobAsyncClient()。 此类不保存有关特定 Blob 的任何状态,而是向服务上的资源发送适当请求的便捷方法。
此客户端包含对 Blob 的操作。 容器上的操作在 上 BlobContainerAsyncClient可用,服务上的操作在 上 BlobServiceAsyncClient可用。
有关详细信息,请参阅 Azure Docs 。
请注意,此客户端是一个异步客户端,它从 Spring Reactor Core 项目 (https://projectreactor.io/) 返回响应。 在此客户端中调用方法 不会 启动实际的网络操作,直到 .subscribe()
对反应响应调用 。 只需通过 Mono#toFuture()将其中一个响应转换为 CompletableFuture 对象。
修饰符和类型 | 字段和描述 |
---|---|
static final int |
MAX_APPEND_BLOCK_BYTES
已放弃 指示在追加 |
static final int |
MAX_BLOCKS
已放弃
使用 getMaxBlocks()。
指示追加 Blob 中允许的最大块数。 |
方法继承自 BlobAsyncClientBase
方法继承自 java.lang.Object
MAX_APPEND_BLOCK_BYTES
MAX_BLOCKS
appendBlock
public Mono
将新的数据块提交到现有追加 Blob 的末尾。
请注意,如果启用了重试 (默认) ,则传递的数据必须可重播。 换句话说, Flux
必须在每次订阅时生成相同的数据。 对于服务版本 2022-11-02 及更高版本,最大块大小为 100 MB。 对于早期版本,最大块大小为 4 MB。 有关详细信息,请参阅 Azure Docs。
示例代码
client.appendBlock(data, length).subscribe(response ->
System.out.printf("AppendBlob has %d committed blocks%n", response.getBlobCommittedBlockCount()));
参数:
Flux
如果启用了重试 (默认) ,则必须可重播。 换句话说,Flux 每次订阅时都必须生成相同的数据。
Flux
点很重要。
返回:
appendBlockFromUrl
public Mono
将另一个 Blob 中的新数据块提交到此追加 Blob 的末尾。
示例代码
client.appendBlockFromUrl(sourceUrl, new BlobRange(offset, count)).subscribe(response ->
System.out.printf("AppendBlob has %d committed blocks%n", response.getBlobCommittedBlockCount()));
参数:
返回:
appendBlockFromUrlWithResponse
public Mono
将另一个 Blob 中的新数据块提交到此追加 Blob 的末尾。
示例代码
AppendBlobRequestConditions appendBlobRequestConditions = new AppendBlobRequestConditions()
.setAppendPosition(POSITION)
.setMaxSize(maxSize);
BlobRequestConditions modifiedRequestConditions = new BlobRequestConditions()
.setIfUnmodifiedSince(OffsetDateTime.now().minusDays(3));
client.appendBlockFromUrlWithResponse(new AppendBlobAppendBlockFromUrlOptions(sourceUrl)
.setSourceRange(new BlobRange(offset, count))
.setDestinationRequestConditions(appendBlobRequestConditions)
.setSourceRequestConditions(modifiedRequestConditions)).subscribe(response ->
System.out.printf("AppendBlob has %d committed blocks%n", response.getValue().getBlobCommittedBlockCount()));
参数:
返回:
appendBlockFromUrlWithResponse
public Mono
将另一个 Blob 中的新数据块提交到此追加 Blob 的末尾。
示例代码
AppendBlobRequestConditions appendBlobRequestConditions = new AppendBlobRequestConditions()
.setAppendPosition(POSITION)
.setMaxSize(maxSize);
BlobRequestConditions modifiedRequestConditions = new BlobRequestConditions()
.setIfUnmodifiedSince(OffsetDateTime.now().minusDays(3));
client.appendBlockFromUrlWithResponse(sourceUrl, new BlobRange(offset, count), null,
appendBlobRequestConditions, modifiedRequestConditions).subscribe(response ->
System.out.printf("AppendBlob has %d committed blocks%n", response.getValue().getBlobCommittedBlockCount()));
参数:
返回:
appendBlockWithResponse
public Mono
将新的数据块提交到现有追加 Blob 的末尾。
请注意,如果启用了重试 (默认) ,则传递的数据必须可重播。 换句话说, Flux
必须在每次订阅时生成相同的数据。 对于服务版本 2022-11-02 及更高版本,最大块大小为 100 MB。 对于早期版本,最大块大小为 4 MB。 有关详细信息,请参阅 Azure Docs。
示例代码
byte[] md5 = MessageDigest.getInstance("MD5").digest("data".getBytes(StandardCharsets.UTF_8));
AppendBlobRequestConditions requestConditions = new AppendBlobRequestConditions()
.setAppendPosition(POSITION)
.setMaxSize(maxSize);
client.appendBlockWithResponse(data, length, md5, requestConditions).subscribe(response ->
System.out.printf("AppendBlob has %d committed blocks%n", response.getValue().getBlobCommittedBlockCount()));
参数:
Flux
如果启用了重试 (默认) ,则必须可重播。 换句话说,Flux 每次订阅时都必须生成相同的数据。
Flux
点很重要。
返回:
create
public Mono
创建 0 长度追加 Blob。 调用 appendBlock 将数据追加到追加 Blob。 默认情况下,此方法不会覆盖现有 Blob。
示例代码
client.create().subscribe(response ->
System.out.printf("Created AppendBlob at %s%n", response.getLastModified()));
返回:
create
public Mono
创建 0 长度追加 Blob。 调用 appendBlock 将数据追加到追加 Blob。
示例代码
boolean overwrite = false; // Default behavior
client.create(overwrite).subscribe(response ->
System.out.printf("Created AppendBlob at %s%n", response.getLastModified()));
参数:
返回:
createIfNotExists
public Mono
创建 0 长度追加 blob(如果不存在)。 调用 appendBlock 将数据追加到追加 Blob。
示例代码
client.createIfNotExists().subscribe(response ->
System.out.printf("Created AppendBlob at %s%n", response.getLastModified()));
返回:
createIfNotExistsWithResponse
public Mono
创建 0 长度追加 blob(如果不存在)。 调用 appendBlock 将数据追加到追加 Blob。
示例代码
BlobHttpHeaders headers = new BlobHttpHeaders()
.setContentType("binary")
.setContentLanguage("en-US");
Map<String, String> metadata = Collections.singletonMap("metadata", "value");
Map<String, String> tags = Collections.singletonMap("tag", "value");
client.createIfNotExistsWithResponse(new AppendBlobCreateOptions().setHeaders(headers)
.setMetadata(metadata).setTags(tags)).subscribe(response -> {
if (response.getStatusCode() == 409) {
System.out.println("Already exists.");
} else {
System.out.println("successfully created.");
}
});
参数:
返回:
createWithResponse
public Mono
创建 0 长度追加 Blob。 调用 appendBlock 将数据追加到追加 Blob。
若要避免覆盖,请将“*”传递给 setIfNoneMatch(String ifNoneMatch)。
示例代码
BlobHttpHeaders headers = new BlobHttpHeaders()
.setContentType("binary")
.setContentLanguage("en-US");
Map<String, String> metadata = Collections.singletonMap("metadata", "value");
BlobRequestConditions requestConditions = new BlobRequestConditions().setLeaseId(leaseId)
.setIfUnmodifiedSince(OffsetDateTime.now().minusDays(3));
client.createWithResponse(headers, metadata, requestConditions).subscribe(response ->
System.out.printf("Created AppendBlob at %s%n", response.getValue().getLastModified()));
参数:
返回:
createWithResponse
public Mono
创建 0 长度追加 Blob。 调用 appendBlock 将数据追加到追加 Blob。
若要避免覆盖,请将“*”传递给 setIfNoneMatch(String ifNoneMatch)。
示例代码
BlobHttpHeaders headers = new BlobHttpHeaders()
.setContentType("binary")
.setContentLanguage("en-US");
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));
client.createWithResponse(new AppendBlobCreateOptions().setHeaders(headers).setMetadata(metadata)
.setTags(tags).setRequestConditions(requestConditions)).subscribe(response ->
System.out.printf("Created AppendBlob at %s%n", response.getValue().getLastModified()));
参数:
返回:
getCustomerProvidedKeyAsyncClient
public AppendBlobAsyncClient getCustomerProvidedKeyAsyncClient(CustomerProvidedKey customerProvidedKey)
使用指定的 AppendBlobAsyncClient 创建一个新的 customerProvidedKey
。
替代:
AppendBlobAsyncClient.getCustomerProvidedKeyAsyncClient(CustomerProvidedKey customerProvidedKey)参数:
返回:
customerProvidedKey
的 。getEncryptionScopeAsyncClient
public AppendBlobAsyncClient getEncryptionScopeAsyncClient(String encryptionScope)
使用指定的 AppendBlobAsyncClient 创建一个新的 encryptionScope
。
替代:
AppendBlobAsyncClient.getEncryptionScopeAsyncClient(String encryptionScope)参数:
null
以不使用加密范围。
返回:
encryptionScope
的 。getMaxAppendBlockBytes
public int getMaxAppendBlockBytes()
根据正在使用的服务版本获取最大追加块字节数。 服务版本 2022-11-02 及更高版本支持上传高达 100MB 的块字节,所有较旧的服务版本都支持高达 4MB 的块字节。
返回:
getMaxBlocks
public int getMaxBlocks()
获取追加 Blob 中允许的最大块数。
返回:
seal
public Mono
密封追加 Blob,使其为只读。 任何后续追加都将失败。
示例代码
client.seal().subscribe(response -> System.out.println("Sealed AppendBlob"));
返回:
sealWithResponse
public Mono
密封追加 Blob,使其为只读。 任何后续追加都将失败。
示例代码
AppendBlobRequestConditions requestConditions = new AppendBlobRequestConditions().setLeaseId(leaseId)
.setIfUnmodifiedSince(OffsetDateTime.now().minusDays(3));
client.sealWithResponse(new AppendBlobSealOptions().setRequestConditions(requestConditions))
.subscribe(response -> System.out.println("Sealed AppendBlob"));
参数:
返回: