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


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 相关文章推荐
动感效果的TAB选项卡jquery 插件
Jul 09 Javascript
jQuery中ajax的使用与缓存问题的解决方法
Dec 19 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
Jun 06 Javascript
JS简单获取及显示当前时间的方法
Aug 03 Javascript
JS解决移动web开发手机输入框弹出的问题
Mar 31 Javascript
微信小程序实战之自定义抽屉菜单(7)
Apr 18 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
Aug 16 jQuery
vue init失败简单解决方法(终极版)
Dec 22 Javascript
使用Angular CLI生成 Angular 5项目教程详解
Mar 18 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
Aug 10 Javascript
使用uni-app开发微信小程序的实现
Dec 13 Javascript
解决removeEventListener 无法清除监听的问题
Oct 30 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
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
PHP如何实现跨域
2016/05/30 PHP
功能强大的php分页函数
2016/07/20 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
JQuery中$之选择器用法介绍
2011/04/05 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
浅谈使用nodejs搭建web服务器的过程
2020/07/20 NodeJs
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
python为tornado添加recaptcha验证码功能
2014/02/26 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
python打开音乐文件的实例方法
2020/07/21 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
大专自我鉴定范文
2013/10/01 职场文书
会计专业毕业生推荐信
2013/11/05 职场文书
应届毕业生应聘自荐信
2013/12/07 职场文书
保外就医申请书范文
2015/08/06 职场文书