我為了解決啥
小程序官方提供的api wx.uploadFile一次只能上傳一個文件,本Multipart實現了一般的表單上傳,無文件數量限制,還能攜帶json上傳你說氣人不氣人
咋用
目錄結構
- ./index.js 在這個入口文件內可以修改版本(切換下文所說的用法一和用法二)
切換你想要的用法,然后打包$ npm run build 運行后在 ./dist文件夾下找到你所需要的庫文件
- ./examples/backend/index.js
這個是模擬后台,$ npm run start 就可啟動后台服務
- ./examples/wx_demo/
這個是微信小程序代碼, 用微信小程序ide導入后就能運行看效果了
用法一:你把文件和要傳的信息給我(包括文件、json數據(只能一層的簡單json哈)、請求頭),我給她們都送到后端去
- 引入庫文件
- 創建 Multipart 對象 該對象構造函數接收參數有:
- fields提交的參數(數組)
- files提交的文件信息(數組)
- header頭信息(json對象)
- url請求路徑(字符串)
```js
let multi = new Multipart({ fields:[{ name:'token', value:'gdsgfhdgjukfdk' },{ name:'username', value:'rainbowLover' }], files:[{ filePath:'http://example.png',//文件路徑 必須要有的 filename:'img1',//文件名稱 后台要不要? name: 'name',//字段名 file: {object} }], header:{ 'Cookie': 'cookievalue', 'headerName': 'headerValue' } })
```
- 還支持動態添加文件
```js
multi.files({ filePath:'http://example.png',//文件路徑 必須要有的 filename:'img1',//文件名稱 后台要不要? name: 'name',//字段名 file: {object} })
```
- 調用對象的提交方法 該方法的參數有:
- url 請求路徑
- options 配置信息 比如header
- 該方法返回一個Promise對象
```js
multi.submit(url, { header }) .then( (res) => { console.log(res) }, (err) => { console.log(err) } )
```
用法二: 你告訴我開始整(json、header),我就調用微信api獲取文件然后直接給你把東西送到后端去,就是在方法一的基礎上二次封裝
- 引入庫文件
- 直接調用filesJsonPost方法, 該方法的參數有:
- options
```js
/** * 多文件上傳 * url: 上傳路徑 必傳 * data: 上傳json參數 默認 {} * jsonKey: 后台接收參數的key 默認 'jsonReport' * count: 文件最多上傳幾張 默認 9 * type: 選取文件類型 默認 all * extension: 選取文件類型 字符串數組 根據文件拓展名過濾,僅 type==file 時有效。每一項都不能是空字符串。默認不過濾。默認 空 * header: 自定義請求頭 */ let options = { url: 'http://localhost:3000/upload', data: { name: "jeck", age: 123 }, jsonKey: "jsonReport", count: 9, type: "all", extension: [null], header: { "headerName": "headerValue" } }
```
1. 運行
```js
npm i npm run build //打包生成庫文件 npm run start //運行后端服務
```
2. 測試小程序
用微信開發者工具打開wx_demo,提交表單后,上傳的文件保存在./examples/tempFiles
最重要的寫在后邊
本demo借鑒supperchong的,如果您不高興了請聯系我刪除
完整代碼:https://gitee.com/haipengguo/Multipart 如果對你有幫助請star