微信小程序 多图上传解决方案
为了使代码体积小 我这里将多图上传 封装到单独的一个js 页面的js调用他

我们看firhealth.js文件内容
// pages/home/home.js
var upload = require('../../style/upload.js');
Page({
/**
* 页面的初始数据
*/
//跳转页面
btn:function(e){
wx.navigateTo({
url: '/pages/sechealth/sechealth',
})
},
tijian:function(e){
var that=this;
upload.Much("https://wx.caoman.net/WXdiagnos/MuchUpload",function(res){ var obj=JSON.parse(res.data);
console.log(obj);
var url="https://wx.caoman.net"+obj.url;
that.setData({
tijianPic: that.data.tijianPic.concat(url),
imglist:1
});
console.log(that.data.tijianPic);
})
},
data: {
//面部图片路径
facePic:[],
//体检图片路径
tijianPic:[],
imglist:0,///控制体检报告是否显示 }, /**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) { }, /**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () { }, /**
* 生命周期函数--监听页面显示
*/
onShow: function () { }, /**
* 生命周期函数--监听页面隐藏
*/
onHide: function () { }, /**
* 生命周期函数--监听页面卸载
*/
onUnload: function () { }, /**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () { }, /**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () { }, /**
* 用户点击右上角分享
*/
onShareAppMessage: function () { }
})
代码 tianjia 函数 为点击时触发的函数调用了 upload.js里边的函数 下面我们看 upload.js 代码
//上传一张图片
var upload=({
Single:function(Funurl,fn){
wx.chooseImage({
count:1, ///最多可以选择一张图片
sizeType:['original','compressed'],//原图或压缩图
sourceType:['album','camera'],//图片来源
success: function(res) {
const tempFilePaths=res.tempFilePaths;//相当于src路径
//console.log(tempFilePaths);
wx.uploadFile({
header:{
"Content-Type":"multipart/form-data"
},
name:'file',
url:Funurl,
filePath: tempFilePaths[0],
success(res){
fn(res);
}
})
},
})
},
//上传多张图片
Much:function(Funurl,fn){
var list=new Array();
wx.chooseImage({
count:9,//最多可以选择9张图
sizeType: ['original','compressed'],
sourceType:['album','camera'],
success: function(res) {
const tempFilePaths=res.tempFilePaths;
for (var i = 0; i < tempFilePaths.length;i++){
wx.uploadFile({
url: Funurl,
name: 'file',
filePath: tempFilePaths[i],//第几张图片
header: {
"Content-Type": "multipart/form-data"
},
success(res) {
fn(res);
},
fail(res) {
console.log(res.data);
}
})
}
},
})
}
})
module.exports=upload;
在upload.js中 我们看到页面调用upload.js的函数了,我们会发现 该函数使用的是 for 将文件循环的上传了,,我在测试时发现 上传文件是异步执行的 这是 在循环完 在调用回调函数,发现回调函数的值是空的,为什么呢,
因为js的异步执行不会阻塞当前线程 当for循环执行完了 第一个上传文件还没有执行完,当函数回调成功后,里边的上传文件异步才依次执行完毕, 我们知道 数组是可以追加的 这时可以让函数回调多次 依次 给
tijianPic 变量追加数组值 当执行完后 我们在console.log() 发现 上传文件了三次 在回调后的代码块里输出 也是三次 那么三次 我们不停的在数组上追加 即上传了多个文件 返回的每个路径我们都存到变量 如果代码还解决不了 请仔细阅读 和测试 上部分代码为 实践项目中部分代码
微信小程序 多图上传解决方案的更多相关文章
- 微信小程序多图上传/朋友圈传图效果【附完整源码】
效果图 部分源代码 js文件: var uploadPicture = require('../Frameworks/common.js') //获取应用实例 const app = getApp() ...
- 微信小程序多张图片上传
微信小程序上传图片每次只能上传一张,所有很多朋友就会问想要多张图片上传怎么办? 首先,我们来看一看wx.chooseImage(object)和wx.uploadFile(OBJECT)这两个个api ...
- [转]微信小程序实现图片上传功能
本文转自:http://blog.csdn.net/feter1992/article/details/77877659 前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何 ...
- nodeJs实现微信小程序的图片上传
今天我来介绍一下nodejs如何实现保存微信小程序传过来的图片及其返回 首先wx.uploadFile绝大部分时候是配合wx.chooseImage一起出现的,毕竟选择好了图片,再统一上传是实现用户图 ...
- 微信小程序实现图片上传功能
前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何实现上传图片到自己的服务器上 前端代码 data: { productInfo: {} }, //添加Banner bin ...
- 微信小程序--实现图片上传
前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何实现上传图片到自己的服务器上 前端代码 data: { productInfo: {} }, //添加Banner bin ...
- 微信小程序中图片上传阿里云Oss
本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发.最近工作遇到一个小问题. 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意去记录一下. 第一步:配置阿里云地址: 我 ...
- [组件封装]微信小程序-图片批量上传照片墙
描述 批量上传图片, 可设置最大上传个数, 可删除, 可设置默认值. 效果 源码 pictures-wall.wxml <view class="picturesWall"& ...
- 微信小程序实现图片上传,预览,删除
wxml: <view class='imgBox'> <image class='imgList' wx:for="{{imgs}}" wx:for-item= ...
随机推荐
- java+appium+安卓模拟器实现app自动化Demo
网上有比较多相关教程,自己写一遍,加深下印象. 环境搭建 据说,很多人都被繁琐的环境搭建给吓到了. 是的,确实,繁琐. node.js 网址 cmd输入node -v,出现下图说明成功. JDK 网址 ...
- Hadoop MapReduce编程 API入门系列之网页排序(二十八)
不多说,直接上代码. Map output bytes=247 Map output materialized bytes=275 Input split bytes=139 Combine inpu ...
- JavaScript——视频插入
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 微信小程序怎么开发(小程序开发文档)
微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验. 2017年1月9日~2018年1月9日,小程序正式上线一周年.上线以来,小程序不断地释放新能力, ...
- javascirpt之 this、apply、call、bind
this.apply.call.bind 这又是一个面试经典问题~/(ㄒoㄒ)/~~也是 ES5中众多坑中的一个,在 ES6 中可能会极大避免 this 产生的错误,但是为了一些老代码的维护,最好还是 ...
- LeetCode 42. Trapping Rain Water 【两种解法】(python排序遍历,C++ STL map存索引,时间复杂度O(nlogn))
LeetCode 42. Trapping Rain Water Python解法 解题思路: 本思路需找到最高点左右遍历,时间复杂度O(nlogn),以下为向左遍历的过程. 将每一个点的高度和索引存 ...
- vue2 阻止时间冒泡
click.stop.prevent <div class="content-right" @click.stop.prevent="pay" > ...
- Vtk读取并显示保存图像
(1):Vtk读取并显示图像:三种方法 转载:未知出处 转载:用VTK显示平面图片:http://blog.csdn.net/tonylk/article/details/464881 用到vtkJP ...
- 优动漫PAINT发展历程和主要功能
优动漫PAINT也就是我们常说的clip studio paint(CSP)的中文版本,它是一款功能强大的动漫绘图软件.经过五年的成长,优动漫PAINT经历了从青涩到成熟的发展过程,随着软件更多功能的 ...
- setTimeout()传带有参数的函数
w3cshool里的解释:setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,语法:setTimeout(code,millisec). 也就是说,第一个参数可以是字符串形式的Ja ...