代码之家  ›  专栏  ›  技术社区  ›  Achmad Naufal Syafiq

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

  •  0
  • Achmad Naufal Syafiq  · 技术社区  · 7 年前

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

    我曾使用multer在Express中提供过类似的服务 multer ,或者它和佩兹是同一件事?

    2 回复  |  直到 7 年前
        1
  •  0
  •   anumula narendra    7 年前
    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);
    });
    

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

        2
  •  0
  •   Achmad Naufal Syafiq    7 年前

    我设法制作了一个小库来解析javascript中的多部分请求。通常,代码是可用的 here .