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


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 模拟JQuery的Ready方法实现并出现的问题
Dec 06 Javascript
详细讲解JS节点知识
Jan 31 Javascript
javascript实现多级联动下拉菜单的方法
Feb 06 Javascript
Bootstrap3制作图片轮播效果
May 12 Javascript
Bootstrap对话框使用实例讲解
Sep 24 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
Jan 04 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
May 03 Javascript
webpack打包js的方法
Mar 12 Javascript
解决node修改后需频繁手动重启的问题
May 13 Javascript
深入浅析JS中的严格模式
Jun 04 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
Mar 21 Javascript
javascript获取select值的方法完整实例
Jun 20 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
PHP 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
PHP实现多条件查询实例代码
2010/07/17 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
复制本贴标题和地址的js代码
2008/07/01 Javascript
javascript中的float运算精度实例分析
2010/08/21 Javascript
Node.js插件的正确编写方式
2014/08/03 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
zookeeper python接口实例详解
2018/01/18 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
Flask-Mail用法实例分析
2018/07/21 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
大学生简历的个人自我评价
2013/12/04 职场文书
初一新生军训方案
2014/05/22 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书