【问题标题】:How to find payload in hapi如何在hapi中找到有效载荷
【发布时间】:2015-11-01 02:28:18
【问题描述】:

我在 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 设为未定义。我有什么遗漏吗?

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

'stream' - 传入的有效负载通过 Stream.Readable 接口。如果有效负载是“multipart/form-data”并且 parse 为真,字段值显示为文本,而文件显示为 作为流提供。来自“多部分/表单数据”上传的文件流 还将有一个包含文件名和标题的属性 hapi 属性。

html代码:

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

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

【问题讨论】:

  • 您确定要发布一个带有名为file 的文件输入字段的表单吗?上面的代码看起来是正确的,所以我们需要查看 HTML 表单和/或 AJAX 代码的代码
  • @MattHarrison 嘿,我已经添加了 html,请看看是否有帮助

标签: node.js hapijs


【解决方案1】:

感谢 Matt Harrison 指出错误,我在文件输入器中缺少属性名称。

html应该是

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

【讨论】:

    猜你喜欢
    • 2023-01-05
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 2020-04-21
    • 2016-08-19
    • 1970-01-01
    • 2022-01-11
    相关资源
    最近更新 更多