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

How to upload images in Hapi.Js via multipart request?

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

我在 Express 中使用 multer multer 提供了类似的服务,或者它可能与 pez 相同?

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);
});

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

我设法制作了一个小库来解析 javascript 中的多部分请求,一般来说,代码可用 here