我正在尝试使用请求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}.`));
答案 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
})
//...