微信小程序实现多张图片同时上传的方法

xiaoxiao2021-03-01  21

  对于微信小程序上传图片其实很麻烦的,每次只能上传一张,所有很多朋友就会问想要多张图片上传怎么办?这里使用递归,当上传完一张图片后重新执行这个函数,直到所有的图片都上传完成后,就不再调用该函数了。具体的实现方法来为大家分享一下。

示例代码如下:

wx.chooseImage({   success: function(res) {     var tempFilePaths = res.tempFilePaths     wx.uploadFile({       url: 'http://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址       filePath: tempFilePaths[0],       name: 'file',       formData:{         'user': 'test'       },       success: function(res){         var data = res.data         //do something       }     })   } })

这里的示例代码,是选择图片,然后上传选中的图片中的第一个图片;现在开始写多张图片上传的例子,首先,我们还是要选择图片:

wx.chooseImage({   success: function(res) {     var tempFilePaths = res.tempFilePaths;//这里是选好的图片的地址,是一个数组       } })

然后在app.js中写一个多张图片上传的方法,后面引入,你也可以写在一个JS文件中,后面引入:

//多张图片上传     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);             }                              }         }); } 多张图片上传的方法写好了,下面就是引用: 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接收代码: <?php      $imgname = $_FILES['file']['name'];     $tmp = $_FILES['file']['tmp_name'];     $filepath = 'now/';//记得要自己创建这个文件夹     if(move_uploaded_file($tmp,$filepath.$imgname.".png")){         echo "上传成功";     }else{         echo "上传失败";     }  ?>

  好了,这样就可以实现在小程序中同时上传多张图片的功能啦,是不是感觉非常简单呢,那么大家都可以尝试一下,如果发现问题的话,可以随时留言咨询寻求帮助哦。

  本文由专业的微信小程序开发公司燚轩科技整理发布,原创不易,如需转载请注明原文作者及出处!

转载请注明原文地址: https://www.6miu.com/read-3350039.html

最新回复(0)