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


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 相关文章推荐
javascript import css实例代码
Jul 18 Javascript
javascript 选择文件夹对话框(web)
Jul 07 Javascript
javascript 闭包
Sep 15 Javascript
ztree获取当前选中节点子节点id集合的方法
Feb 12 Javascript
Jquery promise实现一张一张加载图片
Nov 13 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
Jul 10 Javascript
React操作真实DOM实现动态吸底部的示例
Oct 23 Javascript
简单的Vue SSR的示例代码
Jan 12 Javascript
jQuery中each方法的使用详解
Mar 18 jQuery
js实现各浏览器全屏代码实例
Jul 03 Javascript
基于elementUI实现图片预览组件的示例代码
Mar 31 Javascript
React倒计时功能实现代码——解耦通用
Sep 18 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
Adodb的十个实例(清晰版)
2006/12/31 PHP
解析php如何将日志写进syslog
2013/06/28 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
js获取客户端外网ip的简单实例
2013/11/21 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
python 图片验证码代码分享
2012/07/04 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
简述python Scrapy框架
2020/08/17 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
结婚喜宴家长答谢词
2014/01/15 职场文书
优秀党员获奖感言
2014/02/18 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
初中毕业生自我评价
2015/03/02 职场文书
2019送给家人们的中秋节祝福语
2019/08/15 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS