如何在NodeJS中将多部分请求从一台服务器传递到另一台服务器? [英] How to pass multipart request from one server to another in NodeJS?

查看:498
本文介绍了如何在NodeJS中将多部分请求从一台服务器传递到另一台服务器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个nodeJS服务器, 服务器1从客户端获取请求,并将其传递到服务器2,服务器2向服务器1返回响应,然后服务器对该客户端进行响应. 客户端上传了一个文件,该文件的传递方式必须与我收到的其他任何其他请求相同.

I have two nodeJS servers, Server 1 gets requests from the client and passes it to server 2 which returns a response to server 1 and it responds to the client. The client uploads a file and it has to be passed the same way as any other rest request that I have.

我使用服务器1上的 axios 将数据发送到服务器2,并使用服务器2上的 multer 将文件存储在磁盘上.

I use axios on server 1 to send the data to server2 and multer on server 2 to store the file on disk.

我在将请求从server1发送到server2时遇到问题,因为请求的内容不包含任何内容,并且请求为 Multipart .

I have an issue sending the request from server1 to server2 because the body of the request contains nothing and the request is Multipart.

我应如何处理服务器1上的请求?

How should I handle the request on Server 1 ???

router.post('/fileUpload', (req, res) => {
    console.log(req.body);
    res.status(200).json({ msg: "Got file" });
});

推荐答案

您可以使用form-data模块从nodejs应用程序发送多部分/表单数据

You can use form-data module to send multipart/form-data from nodejs application

这是您可以在Server1上实现的代码,以从客户端接收图像文件并将其发送到Server2.

Here is the code you can implement on Server1 to receive image file from client and send it to Server2.

const express = require("express");
const app = express();
const bodyParser = require('body-parser');
var multer  = require('multer')();
const FormData = require('form-data');
const axios = require('axios');
const fs = require('fs');

app.use(bodyParser.json());

app.post('/fileUpload' , multer.single('fileFieldName'), (req , res) => {
    const fileRecievedFromClient = req.file; //File Object sent in 'fileFieldName' field in multipart/form-data
    console.log(req.file)

    let form = new FormData();
    form.append('fileFieldName', fileRecievedFromClient.buffer, fileRecievedFromClient.originalname);

    axios.post('http://server2url/fileUploadToServer2', form, {
            headers: {
                'Content-Type': `multipart/form-data; boundary=${form._boundary}`
            }
        }).then((responseFromServer2) => {
            res.send("SUCCESS")
        }).catch((err) => {
            res.send("ERROR")
        })
})

const server = app.listen(3000, function () {
    console.log('Server listening on port 3000');
});

此处multer用于处理上传的文件

Here multer is used to handle the uploaded file

这篇关于如何在NodeJS中将多部分请求从一台服务器传递到另一台服务器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆