目前已解决,分享下我的方案,完整代码如下:
const express = require("express");
const multer = require("multer");
const upload = multer();
const app = express();
app.post("/photos/upload", upload.array("files"), function (req, res, next) {
//这里我默认取了数组的第一个数据,大家根据实际的情况进行组合数据
const { originalname, mimetype, buffer } = req.files[0];
request.post(
{
url: "后端服务器地址",
headers: {
//这里写一些必要的头
},
formData: {
//注意,这里一定要按这样的格式写,因为如果不这样写的话
//其中的 filename 字段会丢失 /Content-Type 的类型跟实际传过来不一致的,所以最好自己提前设置好
//比如正确的是这样的(下面两行)
//Content-Disposition: form-data; name="file"; filename="xxx"
//Content-Type: image/jpeg
//这个 bug 困扰我好久了,最后是通过抓包工具分析出来的(太菜了)
file: {
value: buffer,
options: {
filename: originalname,
contentType: mimetype,
},
},
},
},
(error, res, body) => {
// console.log(res)
}
);
});
参考资料:
https://github.com/expressjs/multerhttps://www.npmjs.com/package/request