如何取消上传以java中的azure cloud blob开始

问题描述 投票:0回答:1

我正在尝试使用java上传文件(inputstream)在azure blob存储上。它在正常情况下成功上传,但在某些情况下我想取消上传操作。我无法找到同样的解决方案。

上传文件时可以添加一些取消过滤器吗?

我可以关闭执行程序,因此上传线程是中断但已经上传的文件内容不会恢复。

java blob azure-blob-storage blobstorage
1个回答
0
投票

我看到你想要实现恢复从上一个断点上传文件的进度的功能。

据我所知,没有一个Azure Storage API直接支持break的上传文件功能。但根据我的经验,你可以尝试实现类似的功能,使用AppendBlob的Append Block API上传文件。

以下是从break上传的逻辑流程的基本步骤。

  1. 通过AppendBlobURL.create创建一个AppendBlob。
  2. 要将数据流切片到一系列附加块以进行上载,附加块的切片大小必须小于或等于4MB。
  3. 然后你可以尝试通过AppendBlobURL.appendBlock逐片上传这些追加块。当您缓存了包含x-ms-blob-append-offset和内容长度的先前恢复请求/响应数据时,您可以取消当前块的上传进度。
  4. 您可以从之前的缓存数据恢复上传进度,以便继续通过appendBlock上传下一个数据直到完成或再次取消。

希望能帮助到你。


更新:

您可以尝试包装Java代码以上载到javax.swing.SwingWorker的实例,然后调用SwingWorker.cancel来取消它。请参阅Canceling Background Tasks的子主题Worker Threads and SwingWorker的更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.