将HTTP请求中的base64图像发送到服务器

时间:2020-08-09 19:05:17

标签: javascript node.js express base64 multer

我正在尝试使用请求npm模块将base64图像从nodejs / express应用程序发送到另一个rest api端点,我正在使用以下代码:

首先,这是使用multer和datauri将图像上传到内存中并将其转换为base64的中间件:

const path = require("path");
const multer = require("multer");
const DataURIParser = require("datauri/parser");
const storage = multer.memoryStorage();
const multerUploads = multer({ storage }).single("image");

const dUri = new DataURIParser();

const dataUri = (req) =>
  dUri.format(path.extname(req.file.originalname).toString(), req.file.buffer);

module.exports = {
  multerUploads,
  dataUri,
};

我要向http:// another-api / upload发出另一个发布请求的下一个server.js文件:

const express = require("express");
const cors = require("cors");
const bodyParser = require("body-parser");
const morgan = require("morgan");

const { multerUploads, dataUri } = require("./multer");

// create express app
const app = express();

// enable CORS
app.use(cors());

// add other middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(morgan("dev"));

app.post("/upload", multerUploads, (req, res) => {

  if (req.file) {
    const file = dataUri(req).content;
    console.log(file);
    res.send(file);
    // code to send to another api
    
  }
});

// start the app
const port = process.env.PORT || 3000;

app.listen(port, () => console.log(`App is listening on port ${port}.`));

1 个答案:

答案 0 :(得分:0)

尝试看看axios。


let axios = require("axios");

// ...
axios({
  method: 'post',
  url: 'http://another-api/upload',
  data: {
    image: file
  }
}).then((res) => {
  // code for if is success full
}).catch((err) => {
  // code for if there is any error
})
//...