微信小程序中圖片上傳是個坑糊渊,不能轉成base64和其他字段一起上傳,只好退而求其次半哟,在上傳完字段后,再上傳圖片奔穿。普通上傳就不說了镜沽,這里主要講一下圖片上傳。
圖片上傳封裝函數
微信自己有一個專門上傳圖片的api————uploadFile贱田,然而這個接口只能單圖上傳,但是實際業(yè)務邏輯上嘴脾,肯定會涉及到一些多圖上傳的情況男摧,所以只好使用了一種遞歸循環(huán)的方式(如果大家有更好的,可以留言哦~)
function uploadimg(data, cb) {//單圖or多張圖片上傳
var that = this,
i = data.i ? data.i : 0,//當前上傳的哪張圖片
success = data.success ? data.success : 0,//上傳成功的個數
fail = data.fail ? data.fail : 0;//上傳失敗的個數
wx.uploadFile({
url: config.HTTP_BASE_URL+data.url,//上傳圖片的接口
filePath: data.path[i],//圖片本地路徑
name: 'image',//這里根據自己的實際情況改
formData: data.param[i],//這里是上傳圖片時一起上傳的數據
header: {
"Content-Type": "multipart/form-data"
},
success: (resp) => {
console.log(resp);
success++;//圖片上傳成功译打,圖片上傳成功的變量+1
},
fail: (res) => {
fail++;//圖片上傳失敗耗拓,圖片上傳失敗的變量+1
},
complete: () => {
i++;//這個圖片執(zhí)行完上傳后,開始上傳下一張
if (i == data.path.length) { //當圖片傳完時奏司,停止調用
typeof cb == "function" && cb(i);
} else {//若圖片還沒有傳完乔询,則繼續(xù)調用函數
data.i = i;
data.success = success;
data.fail = fail;
that.uploadimg(data, cb);
}
}
});