在开发小程中,在一个项目需求需要上传多组照片,上传页面部分截图如下:
因为分组比较多,不可能每一组写一个布局,因此使用for循环进行图片的选择显示,首先定义数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | fileList: [{
name: "驾驶证" ,
cid: "0" ,
picimage:[],
}, {
name: "整车外观" ,
cid: "1" ,
picimage: [],
}, {
name: "整车铭牌" ,
cid: "2" ,
picimage: [],
}, {
name: "发动机全貌" ,
cid: "3" ,
picimage: [],
},{
name: "增压器全貌" ,
cid: "4" ,
picimage: [],
}]
|
页面布局代码部分就不贴出了,使用循环遇到的问题有:1.调用同一个wx.chooseImage()会出现第二章覆盖第一张;2.所有组同时没法区分。解决办法:1.当选择图片时,将图片concat到数组中去。2.为每一个组设置一个id,当点击选择图片按钮时将id传过去,chooseImage根据所接收到的id选择将图片显示在哪个分组,关键代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | chooseWxImage: function (e) {
var _this = this ;
var id = e.currentTarget.dataset.picid;
console.log( "id-----" + id)
if (_this.data.fileList[id].picimage.length>1){
wx.showModal({
content: & #39;你最多只能选择2张照片',
showCancel: false ,
})
} else {
wx.chooseImage({
count:2,
sizeType: "compressed" ,
sourceType: [& #39;album', 'camera'],
success: function (res) {
var arr = _this.data.fileList[id].picimage;
for (let i in res.tempFilePaths) {
arr.push(res.tempFilePaths[i])
}
_this.setData({
fileList: _this.data.fileList
})
}
})}
},
|
上传部分,因为小程序只能一张一张上传,因此需要对uploading方法进行处理,先将所有图片数组放到一个集合中,然后对集合进行遍历,以数组为单位进行上传。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | upload: function (e) {
var that = this ;
var fileList = that.data.fileList;
var tempath = [] ;
for (let i in fileList){
tempath.push(fileList[i].picimage)
}
console.log( "tempimage" +tempath)
wx.showLoading({
title: & #39;上传中...',
})
for (let j in tempath) {
requestUtil.uploadimg({
url: & #39;上传地址',
path: tempath[j],
})
wx.hideLoading();
wx.showToast({
title: & #39;上传成功!',
icon:& #39;success',
duration:& #39;2500',
})
}
}
function uploadimg(data) {
var that = this ,
i = data.i ? data.i : 0,
success = data.success ? data.success : 0,
fail = data.fail ? data.fail : 0;
wx.uploadFile({
url: data.url,
filePath: data.path[i],
name: & #39;file',//这里根据自己的实际情况改
formData: data.formData,
success: (resp) => {
if (resp.statusCode == 200) {
success++;
console.log(resp)
console.log(i);
}
},
fail: (res) => {
fail++;
console.log(data.path)
console.log(& #39;fail:' + i + "fail:" + fail);
},
complete: () => {
console.log(i);
i++;
if (i == data.path.length) {
console.log(& #39;执行完毕');
console.log(& #39;成功:' + success + " 失败:" + fail);
} else {
console.log(i);
data.i = i;
data.success = success;
data.fail = fail;
that.uploadimg(data);
}
}
});
}
|
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~