微信小程序多图片上传核心代码:
小程序端:写在app.js文件中可全局调用
//多张图片上传
uploadimg: function (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: 'file',//这里根据自己的实际情况改
formData:{'num':i},//这里是上传图片时一起上传的数据
success: (resp) => {
success++;//图片上传成功,图片上传成功的变量+1
console.log(resp)
//这里可能有BUG,失败也会执行这里,所以这里应该是后台返回过来的状态码为成功时,这里的success才+1
},
fail: (res) => {
fail++;//图片上传失败,图片上传失败的变量+1
console.log('fail:' + i + "fail:" + fail);
},
complete: () => {
console.log(i);
i++;//这个图片执行完上传后,开始上传下一张
if (i == data.path.length) { //当图片传完时,停止调用
console.log('执行完毕');
console.log('成功:' + success + " 失败:" + fail);
} else {
//若图片还没有传完,则继续调用函数
console.log(i);
data.i = i;
data.success = success;
data.fail = fail;
that.uploadimg(data);
}
}
});
},
服务器端:
/** *上传图片 */ public function img(){ $num = input('post.num'); $file = $_FILES['file']['tmp_name']; $path = time().$num; $image = \think\Image::open($file); // 返回图片的宽度 $width = $image->width(); // 返回图片的高度 $height = $image->height(); $image->thumb($width, $height)->save(APP_PATH.'/image/'.$path.'.png'); }