XMLHttpRequest Abort

Gust

Новичок
Добрый день.
Делаю загрузчик файлов через XMLHttpRequest. На форме есть кнопка отмена, которая вызывает метод Abort у XMLHttpRequest объекта. И все бы хорошо, но у меня в базу в BLOB кладется тот кусок, который все таки успели загрузить. Как можно этого избежать?
 

Gust

Новичок
Единственный вариант, который пока приходит на ум, это передавать размер файла и потом сравнивать размер полученного блоба с переданным размером. Но как-то не очень красиво получается.
 

Gust

Новичок
Как по-твоему было-бы красиво?
Есть плагин с загрузкой файлов. Там очень много кода и сделано через аяксовую отправку. Когда жмешь отмена, на сервере ничего не остается, хотя по консоли все то же самое - POST запрос, и canceled.
 

С.

Продвинутый новичок
Это не "красиво", а "готово". Но если тебе нравится, то используй этот плагин.
 

Gust

Новичок
Это не "красиво", а "готово". Но если тебе нравится, то используй этот плагин.
Он не встал. Там самостоятельный index.html, который работает, при попытках встроить его в свою страницу вылетали ошибки. Кода очень много там, поэтому просто переписал на несколько строк через XMLHttpRequest, но вот при отмене загруженная часть почему-то пишется. Может есть какой-то более правильный способ? Например в том ПОСТе который отменили что-то дополнительное передается. Почему так получается, что ПОСТы одинаково передаются, но в одном случае :body который на сервер попало не пишется.
 

С.

Продвинутый новичок
То есть предлагается нам разобраться и кратко доложить тебе?
 

A1x

Новичок
когда клиент делает аборт скрипт на сервере обычно получает SIGTERM
остается навесить обработчик на этот сигнал. На перле у меня это выглядит так:

sub onAbort {
unlink $tmpfile if -f $tmpfile;
..... чегото там еще ....
exit(1);
}

$SIG{TERM} = \&onAbort;
 
Сверху