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


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 相关文章推荐
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
Oct 20 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
May 23 Javascript
jquery 循环显示div的示例代码
Oct 18 Javascript
JavaScript中的return语句简单介绍
Dec 07 Javascript
Bootstrap零基础入门教程(二)
Jul 18 Javascript
深入浅出 jQuery中的事件机制
Aug 23 Javascript
分享bootstrap学习笔记心得(组件及其属性)
Jan 11 Javascript
JS设置CSS样式的方式汇总
Jan 21 Javascript
javascript回调函数的概念理解与用法分析
May 27 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
Aug 15 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
Feb 06 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
Apr 29 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
PHP5+UTF8多文件上传类
2008/10/17 PHP
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
七款最流行的PHP本地服务器分享
2013/02/19 PHP
PHP 微信支付类 demo
2015/11/30 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
JS获取父节点方法
2009/08/20 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
ToolTips JQEURY插件之简洁小提示框效果
2011/11/19 Javascript
轻松实现js图片预览功能
2016/01/18 Javascript
浅谈JavaScript对象与继承
2016/07/10 Javascript
JS模拟实现方法重载示例
2016/08/03 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
Python set常用操作函数集锦
2017/11/15 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
如何基于Python创建目录文件夹
2019/12/31 Python
python urllib和urllib3知识点总结
2021/02/08 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
神路信息Java面试题目
2013/03/31 面试题
2014年预备党员学习新党章思想汇报
2014/09/15 职场文书
领导干部作风建设总结
2014/10/23 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android