Azure (Java) BlobClient.uploadWithResponse 何时准备好上传?
Posted
技术标签:
【中文标题】Azure (Java) BlobClient.uploadWithResponse 何时准备好上传?【英文标题】:When is Azure (Java) BlobClient.uploadWithResponse ready with uploading? 【发布时间】:2021-06-28 13:46:16 【问题描述】:我想将图像上传到 Azure,当正确上传后,我想删除原始本地图像。为此,我需要知道上传成功/完成的时间。
BlobClient.uploadWithResponse
的 docs 提到它返回 Response<BlockBlobItem>
。我可以使用此响应来触发后续操作/方法吗?如果是,如何?
【问题讨论】:
【参考方案1】:考虑到 Azure 存储是强一致性的,只有在创建 blob 时才会得到成功的响应。您可以使用状态码 (201 - Created
) 来确定 blob 是否创建成功。
要检查状态代码,您可以在Response
对象中使用getStatusCode()
。
【讨论】:
我明白了。而且(不是那么精通 Java ......)我将如何进行,因为这将是一个异步操作,我怎样才能让它触发另一个方法调用,例如? 我也不精通 Java(...但不要告诉任何人 :D)。请在此处查看示例:github.com/Azure/azure-sdk-for-java/blob/…。 HTH。 我不会...我尝试使用subscribe
无法识别。示例适用于异步版本。我正在使用同步 BlobClient。知道如何使用BlobClient.uploadWithResponse
的响应吗?
@musicformellons 你不需要使用subscribe
:你使用的是同步的BlobClient
。因此,当uploadWithResponse
完成时,Azure 中的操作也完成了,您可以安全地从本地文件系统中删除您的文件。比如:try // Create BlobClient BlobClient client = ...; // Invoke uploadWithResponse. Consider use uploadFileWithResponse Response<BlockBlobItem> response = client.uploadWithResponse(...); if (response.getStatusCode() == 201) // remove local file catch (Throwable t) // Handle error
以上是关于Azure (Java) BlobClient.uploadWithResponse 何时准备好上传?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Java SDK v2 com.microsoft.azure.documentdb 的 Azure Cosmos 自动缩放
如何使用 java azure-storage-file-datalake 复制 Azure 存储文件/目录
Azure Java 函数 -502-Bad Gateway