node+axios實(shí)現(xiàn)服務(wù)端文件上傳示例
最近調(diào)研企業(yè)wx集成H5應(yīng)用
,其中有一個(gè)發(fā)送圖文消息
,需要上傳圖片到臨時(shí)素材庫(kù)。之前做過(guò)文件上傳到阿里云、七牛云都是服務(wù)端提供封裝好的文件上傳接口,在客戶端使用ajax
的方式上傳。所以就來(lái)踩踩坑,使用node
+axios
實(shí)現(xiàn)服務(wù)端
文件上傳。
一、接口文檔介紹
請(qǐng)求方式:POST(HTTPS)
請(qǐng)求地址:https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
- 使用
multipart/form-data
POST上傳文件, 文件標(biāo)識(shí)名為”media”。 - POST的請(qǐng)求包中,
form-data
中媒體文件標(biāo)識(shí),應(yīng)包含有 filename、filelength、content-type等信息。 - 參數(shù)說(shuō)明:
參數(shù) | 必須 | 說(shuō)明 |
---|---|---|
access_token | 是 | 調(diào)用接口憑證 |
type | 是 | 媒體文件類(lèi)型,分別有圖片(image)、語(yǔ)音(voice)、視頻(video),普通文件(file) |
二、文件上傳
2-1.初始化項(xiàng)目
# 創(chuàng)建目錄 mkdir upload-demo # 進(jìn)入upload-demo目錄 cd upload-demo # npm 初始化 npm init -y # 創(chuàng)建app.js touch app.js
2-2.安裝插件依賴
axios
:是一個(gè)基于 promise
的 HTTP
庫(kù),可以用在客戶端瀏覽器和服務(wù)端node.js
中。
form-data
:是創(chuàng)建可讀multipart/form-data
流的庫(kù)。可用于向其他 Web 應(yīng)用程序提交表單和文件上傳。
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') // 根目錄下需要有一個(gè)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 需要替換為真實(shí) token type: 'image', // 這里以上圖片為例 }, data: formData, headers: { 'Content-Type': 'multipart/form-data', // 必須要設(shè)置 }, }).then(res=>{ console.log(res.data) }) })();
2-4.執(zhí)行腳本
node app.js
不出意外會(huì)輸入以下內(nèi)容:
{
"errcode": 0,
"errmsg": "",
"type": "image",
"media_id": "1G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu9V5w7o8K0",
"created_at": "1380000000"
}
其中media_id
就是上傳到素材庫(kù)的媒體文件唯一標(biāo)識(shí),發(fā)送圖文消息時(shí)需要用到。
以上就是node+axios實(shí)現(xiàn)服務(wù)端文件上傳示例的詳細(xì)內(nèi)容,更多關(guān)于node+axios服務(wù)端文件上傳的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- node.js實(shí)現(xiàn)為PDF添加水印的示例代碼
- 使用Node.js給圖片加水印的方法
- Node.js批量給圖片加水印的方法
- Node.js中Express框架使用axios同步請(qǐng)求(async+await)實(shí)現(xiàn)方法
- nodejs+axios爬取html出現(xiàn)中文亂碼并解決示例
- 利用node+koa+axios實(shí)現(xiàn)圖片上傳和回顯功能
- Node.js 使用axios讀寫(xiě)influxDB的方法示例
- JavaScript利用油猴腳本實(shí)現(xiàn)去水印功能
- 使用python實(shí)現(xiàn)簡(jiǎn)單去水印功能
- node.js去水印方法實(shí)例分析
相關(guān)文章
nodejs版本過(guò)高導(dǎo)致vue2版本的項(xiàng)目無(wú)法正常啟動(dòng)的解決方案
這篇文章主要給大家介紹了關(guān)于nodejs版本過(guò)高導(dǎo)致vue2版本的項(xiàng)目無(wú)法正常啟動(dòng)的解決方案,本文小編給大家詳細(xì)介紹了如何解決這個(gè)問(wèn)題,如有遇到同樣問(wèn)題的朋友可以參考下2023-11-11node.js中的fs.symlinkSync方法使用說(shuō)明
這篇文章主要介紹了node.js中的fs.symlinkSync方法使用說(shuō)明,本文介紹了fs.symlinkSync的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12利用Node.js+Koa框架實(shí)現(xiàn)前后端交互的方法
這篇文章主要給大家介紹了利用Node.js+Koa框架實(shí)現(xiàn)前后端交互的方法,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-02-02Node.js創(chuàng)建子進(jìn)程的幾種實(shí)現(xiàn)方式
這篇文章主要介紹了Node.js創(chuàng)建子進(jìn)程的幾種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10如何從0開(kāi)始用node寫(xiě)一個(gè)自己的命令行程序
這篇文章主要介紹了如何從0開(kāi)始用node寫(xiě)一個(gè)自己的命令行程序,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12NodeJS項(xiàng)目如何打包成可執(zhí)行文件
這篇文章主要介紹了NodeJS項(xiàng)目如何打包成可執(zhí)行文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10node錯(cuò)誤處理與日志記錄的實(shí)現(xiàn)
這篇文章主要介紹了node錯(cuò)誤處理與日志記錄的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12nodejs 全局變量和全局對(duì)象知識(shí)點(diǎn)及用法詳解
在本篇文章里小編給大家整理的是一篇關(guān)于nodejs 全局變量和全局對(duì)象知識(shí)點(diǎn)及用法等內(nèi)容,對(duì)此有興趣的朋友們可以學(xué)習(xí)參考下。2021-12-12