微信小程序多图片上传核心代码:
小程序端:写在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 = thinkImage::open($file);
// 返回图片的宽度
$width = $image->width();
// 返回图片的高度
$height = $image->height();
$image->thumb($width,$height)->save(APP_PATH.'/image/'.$path.'.png');
}