我有一个使用 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 的解决方案也会有所帮助。
答案 0 :(得分:0)
我最终使用了中间件busboy-body-parser,它增加了对从请求对象获取文件的支持,如 req.files 。一旦文件存在,我就使用form-data npm包将其作为表单数据发送到java Web服务器。默认情况下, req.files 支持位于Express.js。但是从4.x开始,它已经deprecated。
Multer是处理 multipart / form-data 的另一个非常好的中间件。