有如下記錄點能夠做爲參考前端
實現該需求能夠分爲如下4步git
克隆 gpake/qiniu-wxapp-sdk 倉庫: git clone github.com/gpake/qiniu…github
在 SDK 目錄下找到 qiniuUploader.js 文件,在須要使用上傳功能的頁面引用 qiniuUploader.js 文件, 該方法四個參數,上傳成功的回調函數返回了成功上傳圖片的連接web
獲取七牛直傳的token,調取後臺接口文檔七牛模塊的前端使用接口,獲取token和域名小程序
獲取token的接口和上傳七牛雲的接口涉及到一個異步變同步操做的問題,所以引用了promise對象api
調七牛直傳的接口,具體實現代碼以下:promise
//app.js中 獲取七牛直傳的token,注意promise對象的使用
fetchUptoken: function () {
return new Promise(function(resolve, reject){
wx.request({
url: API.Qiniu.token,
data: {},
success: function(res){
// success
console.log(res.data.token)
resolve(res)
},
fail: function() {
// fail
},
complete: function() {
// complete
}
})
})
},
//上傳圖片的page中
handleUploadImage: function () {
const qiniuUploader = require("../../utils/qiniuUploader");
let that = this;
let {
uploadPicture
} = that.data
// 經過微信的api選擇圖片,暫存到本地文件夾,而且經過路徑名能夠拿到該圖片
wx.chooseImage({
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: function (res) {
let tempFilePaths = res.tempFilePaths; //選擇了多張圖片,但因爲上傳七牛雲是單張上傳,所以須要循環調接口,注意是調兩個接口,獲取直傳token和七牛直傳的接口
tempFilePaths.map((r,i) => {
app.fetchUptoken().then(function(res){ //異步變同步
let uptoken = res.data.token
//使用引入的qiniuUploader方法調七牛上傳的接口
qiniuUploader.upload(
r, //上傳的圖片
(res) => { //回調 success
console.log(res)
uploadPicture.push(res.imageURL);
that.setData({
uploadPicture,
})
i == tempFilePaths.length - 1 && (
that.uploadImage()
)
}, (error) => { //回調 fail
console.log('error: ' + error);
},
{ // 參數設置 地區代碼 token domain 和直傳的連接 注意七牛四個不一樣地域的連接不同,我使用的是華南地區
region: 'SCN',
uptoken: uptoken,
uploadURL: 'https://up-z2.qbox.me',
domain: 'http://ovkzx61hi.bkt.clouddn.com/',
})
})
})
}
})
},
複製代碼