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


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 相关文章推荐
EasyUI的treegrid组件动态加载数据问题的解决办法
Dec 11 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
Dec 16 Javascript
jquery分页插件jpaginate在IE中不兼容问题
Apr 22 Javascript
js Dialog 去掉右上角的X关闭功能
Apr 23 Javascript
fullpage.js全屏滚动插件使用实例
Sep 06 Javascript
基于Vue实现timepicker
Apr 25 Javascript
Vuex利用state保存新闻数据实例
Jun 28 Javascript
微信小程序模板和模块化用法实例分析
Nov 28 Javascript
vue 微信授权登录解决方案
Apr 10 Javascript
用node.js写一个jenkins发版脚本
May 21 Javascript
layui监听select变化,以及设置radio选中的方法
Sep 24 Javascript
jQuery zTree如何改变指定节点文本样式
Oct 16 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中的数组操作函数整理
2008/08/18 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
PHP伪静态Rewrite设置之APACHE篇
2014/07/30 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
Node.js事件驱动
2015/06/18 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
Python管理Windows服务小脚本
2018/03/12 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
2018/10/22 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
淘宝中秋节活动方案
2014/01/31 职场文书
英语老师推荐信
2014/02/26 职场文书
劳资协议书范本
2014/04/23 职场文书
兴趣小组活动总结
2014/05/05 职场文书
保护环境倡议书300字
2014/05/19 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
变长双向rnn的正确使用姿势教学
2021/05/31 Python