Azure Functions使用node-formidable解析表单数据

时间:2017-10-27 20:53:36

标签: node.js azure multipartform-data azure-functions formidable

这是一个小型的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不是函数。不知道该怎么做,任何帮助将不胜感激。

2 个答案:

答案 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