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


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实现给图片加链接
Aug 15 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
Dec 26 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
jQuery中$.each()函数的用法引申实例
May 12 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
Aug 29 Javascript
浅谈jQuery双事件多重加载的问题
Oct 05 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
Oct 30 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
Mar 30 Javascript
浅谈KOA2 Restful方式路由初探
Mar 14 Javascript
基于Vue全局组件与局部组件的区别说明
Aug 11 Javascript
基于javascript实现放大镜特效
Dec 03 Javascript
vue3.0实现插件封装
Dec 14 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
php 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
php实现删除空目录的方法
2015/03/16 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
浅谈python中的__init__、__new__和__call__方法
2017/07/18 Python
python进行TCP端口扫描的实现
2018/12/21 Python
python 调用有道api接口的方法
2019/01/03 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
python使用smtplib模块发送邮件
2020/12/17 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
西班牙购买隐形眼镜、眼镜和太阳镜网站:Lentiamo.es
2020/06/11 全球购物
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
运动会跳远加油稿
2014/02/20 职场文书
廉政教育的心得体会
2014/09/01 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
商务司机岗位职责
2015/04/10 职场文书
董存瑞观后感
2015/06/11 职场文书
新店开业策划方案怎么书写?
2019/07/05 职场文书