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


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 相关文章推荐
Firefox和IE浏览器兼容JS脚本写法小结
Jul 07 Javascript
javascript脚本调试方法小结
Nov 24 Javascript
利用jquery写的左右轮播图特效
Feb 12 Javascript
让alert不出现弹窗的两种方法
May 18 Javascript
jqGrid中文文档之选项设置
Dec 02 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
Aug 18 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
Dec 23 Javascript
jquery.picsign图片标注组件实例详解
Feb 02 jQuery
vue中的数据绑定原理的实现
Jul 02 Javascript
vue生成token并保存到本地存储中
Jul 17 Javascript
JavaScript中Array方法你该知道的正确打开方法
Sep 11 Javascript
vue路由插件之vue-route
Jun 13 Javascript
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
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
JavaScipt基本教程之前言
2008/01/16 Javascript
js 文件引入实现代码
2010/04/23 Javascript
js的写法基础分析
2011/01/17 Javascript
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
JavaScript实现点击出现子菜单效果
2021/02/08 Javascript
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
Python基础入门之seed()方法的使用
2015/05/15 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
详解python的super()的作用和原理
2020/10/29 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
EJB与JAVA BEAN的区别
2016/08/29 面试题
大学生四个方面的自我评价
2013/09/19 职场文书
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
个人年终总结范文
2015/03/09 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
市场营销计划书
2019/04/24 职场文书
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL