以前写的,今天搞个别的需要,翻出来.直接上代码吧.
/*上传图片,按键方法*/
chooseImage: function (e) {
let that = this;
let imgfiles = that.data.files;
console.log(imgfiles.length);
wx.chooseImage({
count: 5 - imgfiles.length, //最多选取5张,这里微信后台会控制
sizeType: ['compressed'], // 传压缩图
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
let imgsrc = res.tempFilePaths;
// imgfiles = imgfiles.concat(imgsrc);
that.uploadimg({
url: App.uploadimgRoot, //这里是你图片上传的接口
path: imgsrc //这里是选取的图片的地址数组
}); //多张图上传到服务器
//that.upload(that, res.tempFilePaths); /*上传到服务器*/
}
})
},
//预览按钮回调
previewImage: function (e) {
let _this = this;
let data = _this.data.files;
let imgurls = [];
for (var i = 0; i < data.length; i++) {
imgurls = imgurls.concat(data[i].file_path);
}
wx.previewImage({
urls: imgurls // 需要预览的图片http链接列表
})
},
//多张图片上传
uploadimg: function(data){
wx.showToast({
icon: "loading",
title: "正在上传"
});
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: 'iFile',//这里根据自己的实际情况改
header: { "Content-Type": "multipart/form-data" },
formData: {
group_id: 3, //这里后台都传到文章图片类了
wxapp_id: App.siteInfo.uniacid
},
success: (resp) => {
let res = JSON.parse(resp.data);
if(res.code==1){
success++;//图片上传成功,图片上传成功的变量+1
let imgfile = res.data;
that.setData({
files: that.data.files.concat(imgfile) //上传成功后本地加图片
});
}
},
fail: (res) => {
fail++;//图片上传失败,图片上传失败的变量+1
console.log('fail:' + i + "fail:" + fail);
},
complete: () => {
i++;//这个图片执行完上传后,开始上传下一张
if (i == data.path.length) { //当图片传完时,停止调用
wx.hideToast(); //隐藏Toast
//console.log('执行完毕');
//console.log('成功:' + success + " 失败:" + fail);
} else {//若图片还没有传完,则继续调用函数
data.i = i;
data.success = success;
data.fail = fail;
that.uploadimg(data); //递归调用上传
}
}
});
},