如何得到http请求file upload的响应中止?

我打算用express来上传一个使用nodejs的文件。

我看到bodyParser完成了这项工作

app.use(express.bodyParser({"limit": '2mb'})); 

但是,如果我想限制请求的大小,我发现它不会取消上传。 客户端不断发送数据。

所以我写了这个中间件:

 app.use(function (err, req, res, next) { if(err.status == 413){ req.destroy(); return res.json({ "status": 413, "message": err },413); }else next(err); }); 

它工作,取消上传,但客户端不会(或忽略)回应!

我认为这可能是一个http协议的行为,所以任何帮助表示赞赏。

我认为你的代码应该可以工作,但不要破坏请求! 只要删除req.destroy(); 从你的代码行。 你也可以尝试这样的东西(它在我身边),以便不使用中间件:

 express = require 'express' app = express() swig = require 'swig' cons = require 'consolidate' swig.init { root: __dirname + '/views' allowErrors: true } app.set 'views', __dirname + '/views' app.set 'view options', {layout: false} app.engine '.html', cons.swig app.set 'view engine', 'html' # set upload dir app.use express.bodyParser {uploadDir: './upload'} app.get '/', (req, res) -> res.render 'index.html', {} app.post '/file-upload', (req, res) -> # you can get some info about files here (size, path, name, type) console.log req.files # check that size is good if req.files.thumbnail.size > 200 res.send 413 else res.send 'Uploaded!' console.log 'listen port 3000' app.listen 3000 

在forms上:

 <form method="post" enctype="multipart/form-data" action="/file-upload"> <input type="file" name="thumbnail"> <input type="submit"> </form> 

看这里的细节。 希望这会帮助你。