这是一个小型的Azure功能,我试图使用节点强大的方式获取帖子表单字段。
module.exports = function (context, req, intable) {
var formidable = require('formidable');
var form = new formidable.IncomingForm(),
fields = [];
----> form.parse(context.req, function(err, fields, files) {
context.log(fields);
context.done();
return;
});
return;
};
在代码中带箭头的行中,它会出现错误 TypeError:req.on不是函数。不知道该怎么做,任何帮助将不胜感激。
答案 0 :(得分:3)
在使用Azure时,可用的软件包将无济于事,因为在经典的Web服务器文件中,文件以块的形式到达服务器上,因此使用“ on”和“ end”来检索服务器上的数据。如果使用Azure函数,Azure将为您解析表单并将其追加到req.body对象中,并且该对象为JSON,而不是任何请求对象,因此'on'和'end'函数将不可用。
因此,您需要手动解析表单数据。
我都在AWS和Azure中工作(通常我使用文本文件通过AWS和Azure上载),所以我创建了一个文件,直到解析可用来解析自己的表单数据为止。
您可以使用相同的功能。我在GitHub上进行了更新。
https://github.com/chandani-volansys/multipart-data-parser/blob/master/multipart.js
答案 1 :(得分:1)
你在这里使用formidable调用的方法需要require('http')req对象 - 但是这里的请求对象不一样(你可以看到,没有req.on()或其他方法)。我对这个软件包不太熟悉,知道是否有一种方法可以提供请求体(这个req对象有什么)并且仍在解析。
有关传递给此函数的req对象的详细信息是here