如何在hapi中查找有效负载

时间:2015-10-31 02:51:00

标签: node.js hapijs

我在hapijs服务器上有以下路线。我正在尝试使用ajax创建一个新文件。

{
        method: 'POST',
        path: '/create',
        config : {
            payload:{
                maxBytes: 10*1024*1024,
                output:'stream',
                parse: true,
                allow: 'multipart/form-data'
            },
            handler: function (request, reply) {
                var data = request.payload;
                if (data.file) { // undefined always
                    var name = data.file.hapi.filename;
                    var path = writePath + '/' + name;
                    var file = fs.createWriteStream(path);

                    file.on('error', reply);

                    data.file.pipe(file);

                    data.file.on('end', function (err) {
                        reply({
                            filename: data.file.hapi.filename,
                            headers: data.file.hapi.headers
                        });
                    });
                } else reply(boom.badRequest('No file found. Please try again.'));
            }
}

上面的代码总是将data.file指定为undefined。我缺少什么?

在hapi文档http://hapijs.com/api#requests中,输出为stream

  

'stream' - 传入的有效负载通过a提供   Stream.Readable接口。如果有效载荷是'multipart / form-data'和   parse为true,字段值在文件时显示为文本   作为流提供。来自“multipart / form-data”上传的文件流   还将包含一个包含文件名和标题的属性hapi   属性。

html代码:

<form enctype="multipart/form-data" action="/create" method="post">
  <input type="file" id="UniqueFileImporter"/>
  <input type="submit"/>
</form>

当然没有js代码,因为我只需要在从系统中选择文件后提交表单

1 个答案:

答案 0 :(得分:0)

感谢Matt Harrison指出错误,我错过了文件inputer中的属性名称。

html应该是

<form enctype="multipart/form-data" action="/create" method="post">
  <input type="file" name="file" id="UniqueFileImporter"/>
  <input type="submit"/>
</form>