Estoy usando formidable para recibir una carga de archivo con node.js. Envío algunos campos junto con un archivo en una solicitud de varias partes.Cancelación de la solicitud de usuario con Node.js/formidable
Tan pronto como llegaron ciertos campos, puedo validar la autenticidad de la solicitud, por ejemplo, y me gustaría abortar toda la solicitud si esto no es correcto para evitar problemas de recursos.
No he encontrado una forma correcta de abortar la solicitud entrante. He intentado utilizar req.connection.destroy();
de la siguiente manera:
form
.on('field', function(field, value) {
fields[field] = value;
if (!fields['token'] || !fields['id'] || !fields['timestamp']) {
return;
}
if (!validateToken(fields['token'], fields['id'], fields['timestamp'])) {
res.writeHead(401, {'Content-Type' : 'text/plain' });
res.end('Unauthorized');
req.connection.destroy();
}
})
Sin embargo, esto provoca el error siguiente:
events.js:45
throw arguments[1]; // Unhandled 'error' event
^
Error: Cannot resume() closed Socket.
at Socket.resume (net.js:764:11)
at IncomingMessage.resume (http.js:254:15)
at IncomingForm.resume (node_modules/formidable/lib/incoming_form.js:52:11)
at node_modules/formidable/lib/incoming_form.js:181:12
at node_modules/formidable/lib/file.js:51:5
at fs.js:1048:7
at wrapper (fs.js:295:17)
También probé req.connection.end()
pero el archivo mantiene la carga.
¿Alguna idea? ¡Gracias por adelantado!
También estoy interesado en esto. ¿Has encontrado una solución? – Nemok
Lamentablemente, no. – Kamchatka
¿Estaba casi listo para escribir una pregunta duplicada para este problema? ¿Alguna idea hasta ahora? –