微信小程序多张图片上传
标签:
JavaScript
微信小程序上传图片每次只能上传一张,所有很多朋友就会问想要多张图片上传怎么办?
这里使用递归,当上传完一张图片后重新执行这个函数,直到所有的图片都上传完成后,就不再调用该函数。
首先,我们来看一看wx.chooseImage(object)和wx.uploadFile(OBJECT)这两个api
首先来写选取图片的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | wx.chooseImage({ count: 9-pics.length, // 最多可以选择的图片张数,默认9 sizeType: [ 'original' , 'compressed' ], // original 原图,compressed 压缩图,默认二者都有 sourceType: [ 'album' , 'camera' ], // album 从相册选图,camera 使用相机,默认二者都有 success: function (res){ var imgsrc=res.tempFilePaths; pics=pics.concat(imgsrc); that.setData({ pics:pics }); }, fail: function () { // fail }, complete: function () { // complete } }) |
然后在app.js中写一个多张图片上传的方法,后面引入,你也可以写在一个JS文件中,后面引入:
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 | //多张图片上传 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: 'file' , //这里根据自己的实际情况改 formData: null , //这里是上传图片时一起上传的数据 success:(resp)=>{ success++; //图片上传成功,图片上传成功的变量+1 console.log(resp) console.log(i); //这里可能有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); } } }); } |
多张图片上传的方法写好了,下面就是引用:
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 | var app=getApp(); Page({ data:{ pics:[] }, choose: function (){ //这里是选取图片的方法 var that= this , pics= this .data.pics; wx.chooseImage({ count: 9-pics.length, // 最多可以选择的图片张数,默认9 sizeType: [ 'original' , 'compressed' ], // original 原图,compressed 压缩图,默认二者都有 sourceType: [ 'album' , 'camera' ], // album 从相册选图,camera 使用相机,默认二者都有 success: function (res){ var imgsrc=res.tempFilePaths; pics=pics.concat(imgsrc); that.setData({ pics:pics }); }, fail: function () { // fail }, complete: function () { // complete } }) }, uploadimg: function (){ //这里触发图片上传的方法 var pics= this .data.pics; app.uploadimg({ url: 'https://........' ,//这里是你图片上传的接口 path:pics //这里是选取的图片的地址数组 }); }, onLoad: function (options){ } }) |
一个简单的PHP接收图片代码,供测试用:
1 2 3 4 5 6 7 8 9 10 | <?php $imgname = $_FILES [ 'file' ][ 'name' ]; $tmp = $_FILES [ 'file' ][ 'tmp_name' ]; $filepath = 'now/' ; //记得要自己创建这个文件夹 if (move_uploaded_file( $tmp , $filepath . $imgname . ".png" )){ echo "上传成功" ; } else { echo "上传失败" ; } ?> |
完结。
点击查看更多内容
7人点赞
3 评论
共同学习,写下你的评论
qq_矜持范er的少年_03647540
看上去好像很厉害啊 虽然我看不懂 哎 看来还要在学习学习
A_Java_Boy
属于简单的了解servlet,还不错吧
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
回来复习复习,讲得通俗易懂,Get!谢谢分享~