首页 > 编程 > JavaScript > 正文

微信小程序多张图片上传功能

2019-11-19 16:24:20
字体:
来源:转载
供稿:网友

微信小程序上传图片每次只能上传一张,所有很多朋友就会问想要多张图片上传怎么办?

这里使用递归,当上传完一张图片后重新执行这个函数,直到所有的图片都上传完成后,就不再调用该函数。

首先,我们来看一看wx.chooseImage(object)和wx.uploadFile(OBJECT)这两个个api

 示例代码是这样的:

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: 'fileData',  formData:null,  success: (resp) => {  success++;  console.log(resp)  console.log(i);  //这里可能有BUG,失败也会执行这里  },  fail: (res) => {  fail++;  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; wx.chooseImage({  count: 9-pic.length, // 最多可以选择的图片张数,默认9  sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有  sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有  success: function(res){  var imgsrc=res.tempFilePaths;   that.setData({  pics:imgsrc  }); }, fail: function() { // fail }, complete: function() { // complete } }) }, uploadimg:function(){//这里触发图片上传的方法 var pics=this.data.pics; app.uploadimg({  url:'https://........',//这里是你图片上传的接口  path:pics//这里是选取的图片的地址数组 }); }, onLoad:function(options){ }})

刚好写了一个node上传图片代码,亲测可以使用,

一个简单的PHP接收代码:

<?php   $imgname = $_FILES['file']['name'];  $tmp = $_FILES['file']['tmp_name'];  $filepath = 'now/';//记得要自己创建这个文件夹  if(move_uploaded_file($tmp,$filepath.$imgname.".png")){    echo "上传成功";  }else{    echo "上传失败";  } ?>

完结。

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表