/**
* 业务层 递归调用逻辑
*/
function upLoadFileBase(url, data, file, succ) {
//当前上传的哪张图片
wx.uploadFile({
url: url,
filePath: file,
name: 'file',
formData: data,
success: (res) => {
util.log(url + "<---result--->" + JSON.stringify(res.data))
if (res.data != "") {
succ(JSON.parse(res.data))
} else {
common.showToast('上传失败')
}
},
fail: (res) => {
requestFail(res)
},
});
}
//上传图片 头像
function upLoadImg(requestData, fun) {
//当前上传第几章
var i = requestData.i ? requestData.i : 0;
//记录失败多少张
var fail = requestData.fail ? requestData.fail : 0;
//记录成功
var success = requestData.success ? requestData.success : 0;
upLoadFileBase(‘这里写Url’, requestData.data, requestData.fileAry[i], (res) => {
//某张失败的连续失败3次或者在3次中某一次成功了 则继续执行
if (requestData.fail == 3 || res.code == 1) {
i++;
success++;
requestData.fail = 0;
requestData.success = success;
if (i == requestData.fileAry.length) {
//若全部都上传失败则提示 用户上传失败
if (requestData.success == 0 && requestData.fail == 3) {
res.msg = '上传失败'
}
fun(res)
} else {
requestData.i = i;
upLoadImg(requestData, fun)
}
} else {
//尝试3次 对失败的张数
fail++;
requestData.fail = fail;
if (requestData.fail <= 2) {
upLoadImg(requestData, fun)
} else {
//尝试 三次之后会自动进行下一张的上传
i++;
requestData.i = i;
upLoadImg(requestData, fun)
}
}
})
}