首页 > 解决方案 > 将 http 请求中的 base64 图像发送到服务器

问题描述

我正在尝试使用请求 npm 模块从 nodejs/express 应用程序将 base64 图像发送到另一个 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,
};

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

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}.`));

标签: javascriptnode.jsexpressbase64multer

解决方案


试着看看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
})
//...

推荐阅读