如何在node.js中使用express进行上传

hh5*_*188 3 file-upload node.js express

我的代码是这样的:

app.configure(function () {
    app.use(express.static(__dirname + "/media"));
    app.use(express.bodyParser({
          keepExtensions: true
    }));
})

app.post('/upload', function (req, res) {
    console.log(req.files);

    res.send("well done");
    return;
})
Run Code Online (Sandbox Code Playgroud)

蚂蚁做的工作如下:

1.Do的成才progoress情况下,我怎么能绑定处理程序的progress,complete事件,我都试过req.files.on('progress', fn),但它不工作

2我知道如何使用req.files来获取文件的信息,但是如何在上传文件之前限制上传文件的大小,或者限制上传图像的分辨率?

Fra*_*ank 8

您应该查看多部分中间件文档,这是文件上载所涉及的文档.

它表示通过"limit"选项设置限制,如果将"defer"选项设置为true,则可以听取进度.在这种情况下,上传使用的表单将设置为您的请求的属性.然后,您将能够收听进度事件.

所以你的代码应该是这样的(尚未测试):

app.configure(function () {
    app.use(express.static(__dirname + "/media"));
    app.use(express.bodyParser({
          keepExtensions: true,
          limit: 10000000, // 10M limit
          defer: true              
    }));
})

app.post('/upload', function (req, res) {
    req.form.on('progress', function(bytesReceived, bytesExpected) {
        console.log(((bytesReceived / bytesExpected)*100) + "% uploaded");
    });
    req.form.on('end', function() {
        console.log(req.files);
        res.send("well done");
    });
})
Run Code Online (Sandbox Code Playgroud)