微信小程序实现多张图片同时上传的方法

对于微信小程序上传图片其实很麻烦的,每次只能上传一张,所有很多朋友就会问想要多张图片上传怎么办?这里使用递归,当上传完一张图片后重新执行这个函数,直到所有的图片都上传完成后,就不再调用该函数了。具体的实现方法来为大家分享一下。
示例代码如下:

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: ‘file‘,//这里根据自己的实际情况改
formData:null,//这里是上传图片时一起上传的数据
success: (resp) => {
success++;//图片上传成功,图片上传成功的变量+1
console.log(resp)
console.log(i);
//这里可能有BUG,失败也会执行这里,所以这里应该是后台返回过来的状态码为成功时,这里的success才+1
},
fail: (res) => {
fail++;//图片上传失败,图片上传失败的变量+1
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,
pics=this.data.pics;

  wx.chooseImage({
       count: 9-pics.length, // 最多可以选择的图片张数,默认9
       sizeType: [‘original‘, ‘compressed‘], // original 原图,compressed 压缩图,默认二者都有
       sourceType: [‘album‘, ‘camera‘], // album 从相册选图,camera 使用相机,默认二者都有
       success: function(res){
       var imgsrc=res.tempFilePaths; 

pics=pics.concat(imgsrc);
that.setData({
pics:pics
});
},
fail: function() {
// fail
},
complete: function() {
// complete
}
})

},
uploadimg:function(){//这里触发图片上传的方法
var pics=this.data.pics;
app.uploadimg({
url:‘https://........‘,//这里是你图片上传的接口
path:pics//这里是选取的图片的地址数组
});
},
onLoad:function(options){

}

})
一个简单的PHP接收代码:
<?php
$imgname = $_FILES[‘file‘][‘name‘];
$tmp = $_FILES[‘file‘][‘tmp_name‘];
$filepath = ‘now/‘;//记得要自己创建这个文件夹
if(move_uploaded_file($tmp,$filepath.$imgname.".png")){
echo "上传成功";
}else{
echo "上传失败";
}

?>

  好了,这样就可以实现在小程序中同时上传多张图片的功能啦,是不是感觉非常简单呢,那么大家都可以尝试一下,如果发现问题的话,可以随时留言咨询寻求帮助哦。

  本文由专业的微信小程序开发公司燚轩科技整理发布,原创不易,如需转载请注明原文作者及出处!

原文地址:http://blog.51cto.com/13686158/2153724

时间: 2024-08-29 14:53:23

微信小程序实现多张图片同时上传的方法的相关文章

微信小程序选择视频,视频上传,视频播放

请查看链接地址看具体详情: 选择视频: https://mp.weixin.qq.com/debug/wxadoc/dev/api/media-video.html#wxchoosevideoobject 视频上传时和图片上传是一个道理需要使用小程序的上传模版:(将选择视频的链接传给后台,后台将链接转换成后台存储的路径) https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-file.html#wxuploadfileobject 视频播放:

微信小程序开发-地图map组件上使用input组件

微信小程序开发-地图map组件上使用input组件 标签: 微信小程序 uni-app 原生组件层级关系 微信小程序在最高层级 在微信小程序中原生组件包括camera canvas input(仅在focus时表现为原生组件) live-player live-pusher map textarea video 在微信小程序开发中原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上. 后插入的原生组件可以覆盖之前的原生组件. 原生组件还无法在 pic

微信小程序为电商插上翅膀

微信小程序从2017年1月上线开始到现在即将满2周岁了,而2018年可以说是微信小程序的爆发年,它也向我们展示了惊人的成长速度.据统计,截至到2018年9月底,已上线微信小程序超过200 微信小程序从2017年1月上线开始到现在即将满2周岁了,而2018年可以说是微信小程序的爆发年,它也向我们展示了惊人的成长速度.据统计,截至到2018年9月底,已上线微信小程序超过200万个,有300万开发者加入,日活跃量超过4亿. 微信小程序,是基于微信的一种商业微程序,功能与市面上的APP差不多,不用下载,

小程序云开发--云函数上传文件或图片 base64

云函数开发遇到的问题 在微信云开发环境当中,普通的用户并没有往云存储内写入文件的权限 所以普通用户想要使用wx.cloud.uploadFile显然是不现实的 但是我们同时也知道,云函数是后台服务端,具有管理员权限,只要能调用云函数上传文件就可以解决这个问题了 参照官方文档中云函数的写法 const cloud = require('wx-server-sdk') const fs = require('fs') const path = require('path') exports.main

微信小程序开发—快速掌握组件及API的方法---转载

微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支付等功能. 组件 官方文档:https://mp.weixin.qq.com/debug/wxadoc/dev/component/ 对于开发文档,个人建议先了解其整体框架,了解其提供了哪些组件,再联想到这些组件会用在哪些产品的哪些功能.对于接口也是一样,整体了解,而不需要细看. 熟悉了文档的结构,

微信小程序使用本地ip调试时报错解决方法

在微信小程序项目开发时,会用到本地调试,报错如下: 解决方法: 1.单击设置->项目设置 2.勾选该项即可. 原文地址:https://www.cnblogs.com/xindekaishi/p/12700768.html

微信小程序之下拉刷新,上拉更多列表实现

代码地址如下:<br>http://www.demodashi.com/demo/11110.html 一.准备工作 首先需要下载小程序开发工具官方下载地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html 目录结构说明 二.程序实现 1.运行开发工具 选择「本地小程序项目」 2.新建项目 3.开启接口域名免校验 4.运行效果 三.功能说明 1.通过page方式实现下拉刷新,上拉更多列表 onPullDownRef

微信小程序用户拒绝授权的官方推荐处理方法

小程序开发中,现在一般都需要获取微信用户信息,如头像/名字等.这样在用户第一次进入小程序时,微信端会弹出一个是否同意授权的消息提示框.但是如果用户第一时间点击了拒绝,或者用户手误点击了拒绝,如果没有了后续的操作,可能你的小程序就不能使用了,也就会失去这样一位用户.所以,微信官方推荐了一个方法,就是在用户第一次拒绝授权的时候,再给用户一个选择的机会.这样能很好的解决上诉问题.下面以用户需要授权两个权限为例,方法如下: 在 APP.JS 先设置两个全局变量 .用作记录用户是否授权 //判断地理位置是

微信小程序访问豆瓣api报403错误解决方法

通过豆瓣API可以获取很多电影.书籍的数据信息,今天在调用豆瓣正在上映电影接口的时候报403错误,原因是豆瓣设置了小程序的访问权限.如下: 解决方法是使用代理,将豆瓣API地址换成 https://douban.uieee.com,但是,悲催的是又报了400(bad request)错误,如下: 接下来,设置请求头,header默认为: "ontent-type": "application/json"; 但是仍然会报400错误,将请求头中json设置改为xml,请