做项目的时候,需要用Nodejs做代理转发,服务器那边要求图片以流的方式上传,这里记录一下Nodejs以流的形式读取本地图片并上传。

1. 安装依赖

1
npm install request md5

2. 需要模块

1
2
3
4
const fs = require("fs");
const path = require("path");
const request = require("request");
const md5 = require("md5");

3. 具体操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// 获取前台穿过来到图片base64信息
let img = req.body.img;
// 去掉base64头部
let base64Data = img.replace(/^data:image\/\w+;base64,/, "");
// 转换成二进制
let buffer = new Buffer(base64Data, "base64");
// 生成图片md5值
let md5Data = md5(buffer);
// 保存图片
fs.writeFile(path.join(__dirname+"/../uploads", `${md5Data}.jpg`), buffer, (err) => {
if(err) {
console.log(err);
return;
}
// 读取图片
fs.createReadStream(path.join(__dirname+`/../uploads/${md5Data}.jpg`)).pipe(request({
url: url,
method: "POST",
headers: { "Content-Type": "application/json" }
...
}, (error, response, body) => {
console.log(body);
}));
})