Forward file upload data to another API as is with node and express

1.1k Views Asked by At

I have a node endpoint with takes post request for uploading files. I am able to read the data(file) being send from the browser, now I want to forward the data or the whole request to another server hosted somewhere else. I am using node, express and express-fileupload. I am open to get rid on express-fileupload plugin if required. Following is what I have

app.post("/uploadImage", (req, res) => {
  const headers = {
    "Content-Type": "multipart/form-data"
  };
  axios
    .post("http://139.59.80.251:8080/homely/images", req.files.file.data, {
      headers: headers,
    })
    .then((resp) => {
      res.send(resp);
    })
    .catch((e) => {
      res.status(500).send(e);
    });

});

Any help is appreciated.

1

There are 1 best solutions below

0
On

You must send the buffer data as form-data.

For this, you have to convert the files (buffer data) via the package form-data.

The code should look like this:

const FormData = require("form-data");
app.post("/uploadImage", (req, res) => {
  const headers = {
    "Content-Type": "multipart/form-data"
  };
  const my_file = new FormData();
  my_file.append("file", req.files.file.data, { filename: req.files.file.name });
  axios
    .post("http://139.59.80.251:8080/homely/images", my_file, {
      headers: headers,
    })
    .then((resp) => {
      res.send(resp);
    })
    .catch((e) => {
      res.status(500).send(e);
    });
});