Отменить загрузку файла на сервер при отмене с клиента

Я использую управление загрузкой файлов кендо в своем приложении. Например, я выбираю файл размером 20 МБ. Запрос отправляется на сервер, которому необходимо загрузить этот документ в Azure + вставить запись БД, указывающую на большой двоичный объект.

Проблема в том, что если сервер перенес все байты на себя, а остальные операции занимают некоторое время (например, загрузка файла и вставка записи в БД), и в то же время пользователь отменяет загрузку с клиента, она отменяется на клиентский конец, НО сервер все еще продолжает загрузку. Как мне справиться с этим? Какие-нибудь мысли?

Спасибо!


person Deepak Agarwal    schedule 10.01.2017    source источник
comment
это не то, что следует решать с помощью каких-либо сценариев на стороне клиента, поскольку я не верю, что вы сможете сделать новый запрос при закрытии браузера, и, конечно же, это не будет работать, когда соединение прервано из-за проблем с сетью или отмена. Да, есть событие отмены, вы должны вызвать какой-либо метод на стороне сервера при отмене, чтобы удалить загруженный файл.   -  person Sean Ch    schedule 10.01.2017
comment
Да, но скажем, код загрузки на сервер занимает больше времени (для файла большего размера) после того, как все необходимые биты будут переданы на сервер. В то же время пользователь закрывает браузер, я обрабатываю событие отмены и пытаюсь отменить загруженный документ (большой двоичный объект с точки зрения Azure). Это не удастся, так как файл не был загружен полностью. Я мог бы придумать какое-то быстрое решение, но я считаю, что это должно быть обычным сценарием почти для любого другого веб-приложения. Каков стандартный подход?   -  person Deepak Agarwal    schedule 12.01.2017
comment
Не существует стандартного способа, который зависит от хранилища, в которое вы отправляете данные. См. этот пост, который может помочь simple-talk.com/cloud/platform-as-a-service/   -  person Sean Ch    schedule 12.01.2017


Ответы (1)


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

Посмотрите этот пост и ответ Лукаса на stackoverflow и используйте событие отмены в загрузке кендо.

Как остановить передачу файлов, если браузер закрыт/ загрузка отменена

person Sean Ch    schedule 10.01.2017
comment
Пожалуйста, взгляните на мой комментарий выше - person Deepak Agarwal; 12.01.2017