Request Aborted | Остановка ajax запроса

178
04 сентября 2017, 07:47

Сервер - node.js Отправляю файл на сервер с ajax запросом, прогресс загрузки отображается. Есть кнопка, которая останавливает этот ajax запрос (xhr.abort()). После этого сервер падает с ошибкой request aborted. Что делать?

app.post("/blog/add", function (req, res, next) { 
        //Проанализируем загрузку файла 
        var form = new multiparty.Form(); 
        var wayImage = "/files/"; 
 
        form.on('part', function (part) { 
            var path = './public/files/' + part.filename; 
            wayImage += part.filename; 
            var out = fs.createWriteStream(path); 
            part.pipe(out); 
        }); 
 
        form.on('close', function () { 
            //Отправка ссылки на картинку 
            res.send(wayImage); 
        }); 
 
        form.on('error', function () { 
            console.log('error'); 
        }); 
 
        form.parse(req); 
    });

Answer 1

Сервер скорее всего падает, так как у веб-сервера (который является EventEmitter'ом, т.е. генератором событий) нет обработчика события error

.on('error',function(){ /* ... */ })

который срабатывает, когда возникает любая ошибка запроса (соединение отвалилось, пользователь/браузер прервал запрос и т.п.)

Когда нет обработчика error, EventEmitter видя необработанное событие error, бросает исключение, которое и останавливает сервер.

Апдейт

Оно есть у меня. добавил код выше

С кодом стало понятней.

Как говорит документация multiparty https://github.com/pillarjs/multiparty#events

Note that an 'error' event will be emitted both from the form and from the current part.

т.е. part тоже кинет ошибку, поэтому перед part.pipe(out); надо добавить

part.on('error', function () {
    console.log('part error');
    // ну и закрыть out, удалить файл
});
READ ALSO
php file_get_contents на javascript

php file_get_contents на javascript

Можете предложить альтернативу функции PHP file_get_contents на javascript?

196
Сканирование php.ini

Сканирование php.ini

Скомпилировал php

220
Как сделать прием email на nginx

Как сделать прием email на nginx

В nginx есть директива mail{

174