通过Node中间人将表单数据发送到Java服务器

时间:2016-04-03 21:09:09

标签: javascript node.js multipartform-data java-server busboy

我有一个使用 axios 节点服务器发出请求的应用程序,后者又向另一个 java服务器发出请求

从客户端调用节点服务器:

// here payload is FormData()
axios.post(url, payload).then((response) => {
    return callback(null, response);
}).catch((err) => {
    return callback(err, null);
});

在节点服务器中,我使用 busboy 收听请求:

let rawData = '';
const busboy = new Busboy({headers: req.headers});

busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
    file.on('data', function (chunk) {
        rawData += chunk;
    });
});

现在java服务器也期望FormData(就像我将它发送到节点的方式)。如何从节点获取FormData?我一直在苦苦挣扎,尝试了很多东西是徒劳的。任何不涉及 busboy 的解决方案也会有所帮助。

1 个答案:

答案 0 :(得分:0)

我最终使用了中间件busboy-body-parser,它增加了对从请求对象获取文件的支持,如 req.files 。一旦文件存在,我就使用form-data npm包将其作为表单数据发送到java Web服务器。默认情况下, req.files 支持位于Express.js。但是从4.x开始,它已经deprecated

Multer是处理 multipart / form-data 的另一个非常好的中间件。