在NodeJs中上传文件期间停止请求

foo*_*bar 3 file-upload node.js

我正在写一个图像上传器,我想将图像的大小限制在3mb以下.在服务器端,我可以检查标题中图像的大小,类似这样(使用快速):

app.post('/upload', function(req, res) {
  if (+req.headers['content-length'] > 3001000) { // About 3mb
     // Do something to stop the result
     return res.send({'error': 'some kind of error'});
  }
  // Stream in data here...
}
Run Code Online (Sandbox Code Playgroud)

我试图通过(和permeations)停止req

req.shouldKeepAlive = false;
req.client.destroy();
res.writeHead(200, {'Connection': 'close'});
res.end()
Run Code Online (Sandbox Code Playgroud)

他们都没有真正"破坏"阻止更多数据上传的请求.req.client.destroy()似乎冻结了下载,但是res.send({error ...没有被发回.

救命!

men*_*ode 5

抛出错误并抓住它.它将停止文件上传,允许您发送响应.

try { throw new Error("Stopping file upload..."); } 
catch (e) { res.end(e.toString()); }
Run Code Online (Sandbox Code Playgroud)

它有点hackish,但它的工作原理......