收藏
回答

node 企业微信上传临时素材44001错误?

使用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: {
        }
    });
});
最后一次编辑于  2020-03-11
回答关注问题邀请回答
收藏

2 个回答

  • _关中
    _关中
    2022-07-18

    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,
    };
    
    
    
    
    
    



    2022-07-18
    有用
    回复
  • Mr.Zhao
    Mr.Zhao
    2020-03-11
    先改成这个试试 form.append('media', file)
    


    2020-03-11
    有用
    回复 4
    • 桦桦
      桦桦
      2020-03-11
      改了没有效果,我把filename、filelength也加上了一样
      2020-03-11
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-03-11回复桦桦
      我用了request库,axios我再研究研究
      2020-03-11
      回复
    • 哆啦A梦
      哆啦A梦
      2022-06-16
      亲  axios  研究成功了吗?我的也报这个错
      2022-06-16
      回复
    • 洪涛
      洪涛
      2023-07-13回复哆啦A梦
      我擦,我也是
      2023-07-13
      回复
登录 后发表内容
问题标签