Node.js结合Axios实现服务端文件上传示例

作者:后端茶话

时间:2026-10-26

浏览:549

本文介绍如何使用Node.js配合Axios库在服务端实现文件上传功能。通过form-data构造multipart/form-data请求,调用企业微信接口上传图片至临时素材库,并解析返回的media_id等关键信息,适用于服务端集成场景。

文章目录

近期在进行企业微信H5应用集成调研时,发现发送图文消息功能需要将图片上传至临时素材库。以往处理文件上传至阿里云或七牛云时,通常由服务端提供封装好的接口,客户端通过ajax方式提交。因此,本文尝试使用node结合axios来完成服务端端的文件上传任务。

一、接口文档介绍

请求方式:POST(HTTPS)

请求地址:https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE

  • 利用multipart/form-data格式POST上传文件,文件标识名为”media”。
  • 在POST请求包中,form-data里的媒体文件标识需包含filename、filelength、content-type等详细信息。
  • 参数说明:
参数必须说明
access_token是调用接口凭证
type是媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file)

二、文件上传

2-1.初始化项目

# 创建目录
mkdir upload-demo
# 进入upload-demo目录
cd upload-demo
# npm 初始化
npm init -y
# 创建app.js
touch app.js

2-2.安装插件依赖

axios:是一个基于 promise 的 HTTP 库,可以用在客户端浏览器和服务端node.js 中。

form-data:是创建可读multipart/form-data流的库。可用于向其他 Web 应用程序提交表单和文件上传。

npm i -S axios form-data

2-3.上传核心代码

// app.js
const fs = require('fs')
const FormData = require('form-data')
const axios = require('axios')
;(()=>{
    let formData = new FormData();
    let imgFiles = fs.createReadStream('./test.jpg')    // 根目录下需要有一个test.jpg文件
    formData.append('media', imgFiles);
    axios({
        url: 'https://qyapi.weixin.qq.com/cgi-bin/media/upload',
        method: 'POST',
        params: {
            access_token: 'ACCESS_TOKEN',   // ACCESS_TOKEN 需要替换为真实 token
            type: 'image',   // 这里以上图片为例
        },
        data: formData,
        headers: {
            'Content-Type': 'multipart/form-data', // 必须要设置
        },
    }).then(res=>{
        console.log(res.data)
    })
})();

2-4.执行脚本

node app.js

不出意外会输入以下内容:

{ "errcode": 0, "errmsg": "", "type": "image", "media_id": "1G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu9V5w7o8K0", "created_at": "1380000000" }

其中media_id就是上传到素材库的媒体文件唯一标识,发送图文消息时需要用到。

以上就是node+axios实现服务端文件上传示例的详细内容,更多关于node+axios服务端文件上传的资料请关注本站其它相关文章!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章