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


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星星评分效果
Jul 24 Javascript
jquery的总体架构分析及实现示例详解
Nov 08 Javascript
贴近用户体验的Jquery日期、时间选择插件
Aug 19 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
Dec 07 Javascript
AngularJS模块学习之Anchor Scroll
Jan 19 Javascript
Web前端开发工具——bower依赖包管理工具
Mar 29 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
Apr 17 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
Mar 08 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
May 07 Javascript
Typescript3.9 常用新特性一览(推荐)
May 14 Javascript
vue.js 解决v-model让select默认选中不生效的问题
Jul 28 Javascript
jQuery实现简单弹幕制作
Dec 10 jQuery
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 文件上传实例代码
2012/04/19 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
Google Suggest ;-) 基于js的动态下拉菜单
2006/10/11 Javascript
Javascript &amp; DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
2007/06/02 Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
jQuery+HTML5美女瀑布流布局实现方法
2015/09/21 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
python查看模块,对象的函数方法
2018/10/16 Python
python制作mysql数据迁移脚本
2019/01/01 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
Django组件cookie与session的具体使用
2019/06/05 Python
django-crontab 定时执行任务方法的实现
2019/09/06 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
python3跳出一个循环的实例操作
2020/08/18 Python
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
五年级语文教学反思
2014/01/30 职场文书
安全大检查实施方案
2014/02/22 职场文书
大跃进口号
2014/06/16 职场文书
煤矿安全协议书
2014/08/20 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书