Как отменить загрузку, начатую с облачного облака Azure в Java - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь загрузить файл (inputtream) в хранилище BLOB-объектов Azure, используя Java. Он успешно загружен в обычном сценарии, но в некоторых случаях я хочу отменить загрузку. Я не могу найти решение для того же.

Можем ли мы добавить фильтр отмены при загрузке файла?

Я могу завершить работу исполнителя, поэтому загрузка потока прерывается, но уже загруженное содержимое файла не возвращается обратно.

1 Ответ

0 голосов
/ 15 апреля 2019

Я вижу, что вы хотите реализовать функцию для возобновления процесса загрузки файла с предыдущей точки останова.

Как я знаю, API хранилища Azure не поддерживает функцию прямой загрузки файла с разрыва.Но, исходя из моего опыта, вы можете попытаться реализовать аналогичную функцию для использования Append Block API AppendBlob для загрузки файла.

Вот основные этапы логического потока для загрузки с перерыва.

  1. Чтобы создать AppendBlob с помощью AppendBlobURL.create
  2. Чтобы разделить поток данных на серию блоков добавления для загрузки, размер фрагмента блока добавления должен быть меньшечем или равно 4 МБ.
  3. Затем вы можете попытаться загрузить эти блоки добавления по частям с помощью AppendBlobURL.appendBlock.И вы можете отменить процесс загрузки текущего блока, если вы кэшировали предыдущие данные запроса / ответа для возобновления, которые включают x-ms-blob-append-offset и длину содержимого.
  4. Вы можете возобновить процесс загрузки с предыдущих кэшированных данных.непрерывно загружать следующий через appendBlock до завершения или отменить снова.

Надеюсь, это поможет.


Обновлено:

Вы можете попробоватьобернуть ваш Java-код для загрузки в экземпляр javax.swing.SwingWorker, а затем вызвать SwingWorker.cancel, чтобы отменить его.Пожалуйста, смотрите более подробную информацию из подтемы Canceling Background Tasks из Worker Threads and SwingWorker.

...