如何通过多部分请求在Hapi.Js上传图像?

时间:2017-11-03 06:56:41

标签: node.js multipartform-data hapijs

如何使用hapi在node.js中创建API并接受来自客户端的多部分请求?我找到了pez,但我真的不知道它是什么,知道它是如何工作的,因为它没有真正提供任何描述或文档。

我使用multer multer在Express中提供了类似的服务,或者也许和pez一样?

2 个答案:

答案 0 :(得分:0)

let fs = require('fs');
let Hapi = require('hapi');

letserver = Hapi.createServer('localhost', Number(process.argv[2] || 8080));

server.route({
    method: 'POST',
    path: '/submit',
    config: {

        payload: {
            output: 'stream',
            parse: true,
            allow: 'multipart/form-data'
        },

        handler: function (request, reply) {
            let data = request.payload;
            if (data.file) {
                let name = data.file.hapi.filename;
                let path = __dirname + "/uploads/" + name;
                let file = fs.createWriteStream(path);

                file.on('error', function (err) { 
                    console.error(err) 
                });

                data.file.pipe(file);

                data.file.on('end', function (err) { 
                    let ret = {
                        filename: data.file.hapi.filename,
                        headers: data.file.hapi.headers
                    }
                    reply(JSON.stringify(ret));
                })
            }

        }
    }
});

server.start(function () {
    console.log('info', 'Server running at: ' + server.info.uri);
});

此代码适用于多部分请求,您需要提及允许的有效负载类型。

答案 1 :(得分:0)

我设法创建一个小库来解析javascript中的多部分请求,代码可用here