使用node做中转上传企业微信临时素材。上传报44001,返回结果如下(上传普通的jpg/png)
实现关键代码:
let fs = require('fs');
let express = require('express');
let app = express();
let formidable = require('formidable');
const FormData = require('form-data');
var axios = require('axios');
// 上传文件方法
function upladFile(file, { url, onload, onerror, params }) {
const form = new FormData(); // FormData 对象
// Add multipart params, 必须放在file之前
for (const key in params) {
form.append(key, params[key]);
}
// 要放在其他参数后面
form.append('file', file); // 文件对象
// 用户购买相关页面需要做网页授权,获取用户信息
axios({
url: url,
method: 'post',
data: form,
headers: form.getHeaders()
// headers: {
// 'Content-Type': 'multipart/form-data'
// }
})
.then(res => {
onload && onload(res.data);
})
.catch(err => {
onerror && onerror(err);
})
}
// 其他代码
fs.readFile(file.path, function(err, data) {
// 上传到企业微信
upladFile(data, {
url: `https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=${result.access_token}&type=image`,
onload: function(e) {
console.log('上传完毕');
},
onerror: function(e) {
console.log('上传错误')
},
params: {
}
});
});
nodejs 中用到的
var FormData = require('form-data'); const axios = require("axios") let type = "image"; const uploadTempMateria = async (access_token) => { const imageData = `此处填图片base64`; const base64ImgStr = imageData.replace(/^data:image\/[a-z]+;base64,/, ""); const formdata = new FormData(); formdata.append("media", Buffer.from(base64ImgStr, "base64"), { contentType: "image/jpeg", filename: "upload", }); let { data } = await axios( { url: `https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=${access_token}&type=${type}`, method: 'post', data: formdata, headers: { "Content-Type": "multipart/form-data" }, } ); console.log(data,"upload"); }; module.exports = { uploadTempMateria, };
先改成这个试试 form.append('media', file)
// 上传文件方法
function upladFile(file, { url, onload, onerror, params }) {
const form = new FormData(); // FormData 对象
// Add multipart params, 必须放在file之前
for (const key in params) {
form.append(key, params[key]);
}
// 要放在其他参数后面
// form.append('file', file); // 文件对象
form.append('media', file); // 文件对象
//。。。
}
fs.readFile(file.path, function(err, data) {
// 上传到企业微信
upladFile(data, {
url: `https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=${result.access_token}&type=image`,
//...
params: {
// 不能在这里传递token信息
// access_token: result.access_token,
// type: 'image',
filename: file.name,
filelength: file.size
}
});
});