小编Wil*_*ger的帖子

req.form不是实例化的多方表单对象

我正在使用具有多部分中间件的快速节点框架.设置multipart defer: true选项使我可以访问req.form路径,但它似乎不是多方Form对象的有效实例.它只是一个普通的旧JS对象.

问题是我无法使用表单对象上的multiparty文档中概述的功能.收听事件,解析表单等都不起作用.

我使用它作为建议而不是使用express的折旧bodyParser():

app.use(express.urlencoded());
app.use(express.json());
app.use(express.multipart({ limit: '900mb', defer: true }));
Run Code Online (Sandbox Code Playgroud)

在我的路线:

app.post('/api/videos/upload', isLoggedIn, function(req, res) {
    var form = req.form;
    form.on('progress', function(bytesReceived, bytesExpected) {
        console.log(bytesReceived + ' / ' + bytesExpected);
    });
Run Code Online (Sandbox Code Playgroud)

我在日志中得不到有关进展的任何信息.我看到的所有例子都假设这个表单对象是真正的交易而不仅仅是数据对象.他们有什么不同的做法?我错过了什么?

我已经看到建议编写我自己的中间件直接使用multiparty的解决方案.我考虑过这个,但是我在不同路径上使用多部分中间件用于不需要这种控制级别的其他形式.是否可以使用multipart并编写我自己的中间件只是为了上传?

如果我要走下一个兔子洞,我会解释我的最终目标.我想在上传开始之前检查预期的字节,这样我就可以立即将其踢回前端.没有理由用户在发现文件太大之前应该等待900MB上传.如果有人对如何实现其他方式有任何见解请分享.

upload middleware multipart node.js express

1
推荐指数
1
解决办法
1903
查看次数

标签 统计

express ×1

middleware ×1

multipart ×1

node.js ×1

upload ×1