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


Posted in Javascript onJune 07, 2017

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

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

首先,我们来看一看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 "上传失败";
 }

 ?>

完结。

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 获取浏览器高度和宽度值(多浏览器)
Sep 02 Javascript
js新闻滚动 js如何实现新闻滚动效果
Jan 07 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
Jan 13 Javascript
jquery插件之定时查询待处理任务数量
May 01 Javascript
Jquery api 速查表分享
Jan 12 Javascript
javascript格式化指定日期对象的方法
Apr 21 Javascript
Javascript动态创建表格及删除行列的方法
May 15 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
Aug 17 Javascript
高效的jquery数字滚动特效
Dec 17 Javascript
JS实现为排序好的字符串找出重复行的方法
Mar 02 Javascript
Javascript创建类和对象详解
May 31 Javascript
VUE之图片Base64编码使用ElementUI组件上传
Apr 09 Vue.js
Vue.js对象转换实例
Jun 07 #Javascript
深入理解Angular4中的依赖注入
Jun 07 #Javascript
Vue中保存用户登录状态实例代码
Jun 07 #Javascript
jquery dataTable 后台加载数据并分页实例代码
Jun 07 #jQuery
jQuery用户头像裁剪插件cropbox.js使用详解
Jun 07 #jQuery
使用vue和datatables进行表格的服务器端分页实例代码
Jun 07 #Javascript
Angular 4 指令快速入门教程
Jun 07 #Javascript
You might like
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
JavaScript内核之基本概念
2011/10/21 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
javascript实现密码验证
2015/11/10 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
js中的DOM模拟购物车功能
2017/03/22 Javascript
JS实现搜索关键词的智能提示功能
2017/07/07 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
wxPython窗体拆分布局基础组件
2019/11/19 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
python如何写出表白程序
2020/06/01 Python
python如何查看网页代码
2020/06/07 Python
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
英国领先的在线高尔夫商店:Gamola Golf
2019/11/16 全球购物
某公司Java工程师面试题笔试题
2016/03/27 面试题
实习生单位鉴定意见
2013/12/04 职场文书
高一地理教学反思
2014/01/18 职场文书
超市中秋节促销方案
2014/03/21 职场文书
小学领导班子对照材料
2014/08/23 职场文书
个人总结怎么写
2015/02/26 职场文书
资金申请报告范文
2015/05/14 职场文书