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


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 相关文章推荐
js 删除数组的几种方法小结
Feb 21 Javascript
Javascript中常用类型的格式化方法小结
Dec 26 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
Jan 14 Javascript
jQuery实现的简单悬浮层功能完整实例
Jan 23 Javascript
jQuery仿IOS弹出框插件
Feb 18 Javascript
浅谈jquery拼接字符串效率比较高的方法
Feb 22 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
Dec 27 Javascript
详解Ant Design of React的安装和使用方法
Dec 27 Javascript
详解一个基于套接字实现长连接的express
Mar 28 Javascript
深入理解redux之compose的具体应用
Jan 12 Javascript
vue 授权获取微信openId操作
Nov 13 Javascript
vue.js Router中嵌套路由的实用示例
Jun 27 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
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
PHP中unset,array_splice删除数组中元素的区别
2014/07/28 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
CSS JavaScript 实现菜单功能 改进版
2008/12/09 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python+django实现文件下载
2016/01/17 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
python求前n个阶乘的和实例
2020/04/02 Python
python实现简单猜单词游戏
2020/12/24 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
乌克兰的第一家手表店:Deka
2020/03/05 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
正隆泰信息技术有限公司上机题
2012/06/14 面试题
一道Delphi上机题
2012/06/04 面试题
教师自我评价范文
2013/12/16 职场文书
教师试用期自我鉴定
2014/02/12 职场文书
文化宣传方案
2014/03/13 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
党小组鉴定意见
2015/06/02 职场文书
离职信范本
2015/06/23 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL