我正在node.js使用express framework,而我正在构建一个可以上传文件的表单,我正在使用node-formidable。
我的问题是,如果我发现上传文件出错,我无法关闭请求。我想检查文件类型,大小等。所以我可以上传正确的文件,文件实际上没有上传,所以我不浪费时间。
所以问题是我无法停止HTTP请求。
这是我到目前为止所尝试的内容:
request.connection.destroy();
response.end('something went wrong...');
我假设connection.destroy()
中止了请求,我知道这是因为它触发了强制表单中止事件(form.on('abort', function(){ ... })
)但是文件仍在上传,并且响应不会到达文件上传后。
那么我应该如何关闭HTTP请求,并将消息发送回客户端?
编辑:
还有别的,当我不使用response.end()
然后它起作用,除了客户端等待答案,这很奇怪:\
答案 0 :(得分:4)
这样做的正确方法是:
request.pause();
response.status = 400;
response.end('something went wrong...');
来源:https://groups.google.com/forum/?fromgroups=#!topic/nodejs/2gIsWPj43lI
答案 1 :(得分:0)
尝试使用以下代码:
当您的服务器端验证失败时,请提供如下响应:
res.json({'IsFileUploaded':'false', 'requiredFileSize': '1000bytes', 'actualFileSize': '800bytes', 'AlertMsg':'File size should be at least 1000 bytes....'})
它会关闭连接,您可以以JSON格式传递数据