我正在尝试使用Java在Azure Blob存储上上传文件(输入流)。 在正常情况下,它已成功上传,但是在某些情况下,我想取消上传操作。 我找不到相同的解决方案。
我们可以在上传文件时添加一些取消过滤器吗?
我可以关闭执行程序,因此上传线程被中断,但是文件的已上传内容不会恢复。
答案 0 :(得分:0)
我看到您想实现从上一个断点恢复上传文件进度的功能。
据我所知,没有Azure存储API直接支持从中断上传文件的功能。但是根据我的经验,您可以尝试实现类似的功能,使用AppendBlob的Append Block
API上载文件。
这是从中断上传的逻辑流程的基本步骤。
AppendBlobURL.create
创建一个AppendBlob。AppendBlobURL.appendBlock
逐段上传这些附加块。并且,当您缓存了用于恢复的先前请求/响应数据(包括x-ms-blob-append-offset
和内容长度)后,您可以取消当前块的上传进度。appendBlock
上传下一个,直到完成或再次取消。希望有帮助。
已更新:
您可以尝试包装要上传的Java代码到javax.swing.SwingWorker
的实例中,然后调用SwingWorker.cancel
取消它。请从Canceling Background Tasks
的子主题Worker Threads and SwingWorker
中查看更多详细信息。