本文实例为大家分享了微信小程序实现多张图片上传的具体代码,供大家参考,具体内容如下
Page({

/**

* 页面的初始数据

*/
data: {

pics: [],

count: 9, //上传图片最大数量

// showImgUrl: "", //路径拼接,一般上传返回的都是文件名,

uploadImgUrl: 'https://xxx/UploadHandler.ashx', //图片的上传的路径

detailPics: [], //上传的结果图片集合
},
selectimages() {

var that = this;

var detailPics = that.data.detailPics;

if (detailPics.length >= that.data.count) {

wx.showToast({

title: '最多选择' + that.data.count + '张!',

})

return;

}

wx.chooseImage({

count: that.data.count, // 最多可以选择的图片张数,默认9

sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有

sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有

success: function(res) {

var imgs = res.tempFilePaths;

for (var i = 0; i < imgs.length; i++) {

that.data.pics.push(imgs[i])

}

that.setData({

pics: that.data.pics

})

console.log(that.data.pics)

that.uploadimg({

url: that.data.uploadImgUrl, //这里是你图片上传的接口

path: that.data.pics, //这里是选取的图片的地址数组

});

},

})
},
//多张图片上传
uploadimg: function(data) {

wx.showLoading({

title: '上传图片中...',

mask: true,

})

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: 'fileData',

formData: null,

success: (resp) => {

wx.hideLoading();

success++;

var str = resp.data //返回的结果,可能不同项目结果不一样

var pic = JSON.parse(str);

var pic_name = pic.url;

var detailPics = that.data.detailPics;

detailPics.push(pic_name)

that.setData({

detailPics: detailPics

})

},

fail: (res) => {

fail++;

console.log('fail:' + i + "fail:" + fail);

},

complete: () => {

i++;

if (i == data.path.length) { //当图片传完时,停止调用


that.send()

console.log('执行完毕');

console.log('成功:' + success + " 失败:" + fail);

var myEventDetail = {

picsList: that.data.detailPics

} // detail对象,提供给事件监听函数

var myEventOption = {} // 触发事件的选项

that.triggerEvent('myevent', myEventDetail, myEventOption) //结果返回调用的页面

} else { //若图片还没有传完,则继续调用函数

data.i = i;

data.success = success;

data.fail = fail;

that.uploadimg(data); //递归,回调自己

}

}

});
},
})
Page({

/**

* 页面的初始数据

*/
data: {

pics: [],

count: 9, //上传图片最大数量

// showImgUrl: "", //路径拼接,一般上传返回的都是文件名,

uploadImgUrl: 'https://xxx/UploadHandler.ashx', //图片的上传的路径

detailPics: [], //上传的结果图片集合
},
selectimages() {

var that = this;

var detailPics = that.data.detailPics;

if (detailPics.length >= that.data.count) {

wx.showToast({

title: '最多选择' + that.data.count + '张!',

})

return;

}

wx.chooseImage({

count: that.data.count, // 最多可以选择的图片张数,默认9

sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有

sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有

success: function(res) {

var imgs = res.tempFilePaths;

for (var i = 0; i < imgs.length; i++) {

that.data.pics.push(imgs[i])

}

that.setData({

pics: that.data.pics

})

console.log(that.data.pics)

that.uploadimg({

url: that.data.uploadImgUrl, //这里是你图片上传的接口

path: that.data.pics, //这里是选取的图片的地址数组

});

},

})
},
//多张图片上传
uploadimg: function(data) {

wx.showLoading({

title: '上传图片中...',

mask: true,

})

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: 'fileData',

formData: null,

success: (resp) => {

wx.hideLoading();

success++;

var str = resp.data //返回的结果,可能不同项目结果不一样

var pic = JSON.parse(str);

var pic_name = pic.url;

var detailPics = that.data.detailPics;

detailPics.push(pic_name)

that.setData({

detailPics: detailPics

})

},

fail: (res) => {

fail++;

console.log('fail:' + i + "fail:" + fail);

},

complete: () => {

i++;

if (i == data.path.length) { //当图片传完时,停止调用


that.send()

console.log('执行完毕');

console.log('成功:' + success + " 失败:" + fail);

var myEventDetail = {

picsList: that.data.detailPics

} // detail对象,提供给事件监听函数

var myEventOption = {} // 触发事件的选项

that.triggerEvent('myevent', myEventDetail, myEventOption) //结果返回调用的页面

} else { //若图片还没有传完,则继续调用函数

data.i = i;

data.success = success;

data.fail = fail;

that.uploadimg(data); //递归,回调自己

}

}

});
},
})效果图:为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。《微信小程序开发教程》以上就是本文的全部内容,希望对大家的学习有所帮助。