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