微信小程序 多图上传解决方案
为了使代码体积小 我这里将多图上传 封装到单独的一个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= ...
随机推荐
- AIX的系统备份
AIX克隆盘即AIX的rootvg的备用替换磁盘,用于保留AIX的原始状态,它可作为软件的升级后出现问题快速回退到原系统的备份手段,也可用于测试两个不同版本的AIX系统.系统可保留两块引导磁盘,而且都 ...
- Blender插件之Panel
目标 [x] 总结Blender之Panel 总结 Blender之Panel需要从Blender界面组成开始理解. 直观上Blender的界面层次为 Editors ‣ Regions ‣ (Tab ...
- Java Socket通讯---网络基础
java socket 通讯 参考慕课网:http://www.imooc.com/learn/161 一.网络基础知识 1.1 通讯示意图 1.2 TCP/IP协议 TCP/IP是世界上应用最为广泛 ...
- D - Knight Tournament(set)
Problem description Hooray! Berl II, the king of Berland is making a knight tournament. The king has ...
- C - Ilya and Sticks(贪心)
Problem description In the evening, after the contest Ilya was bored, and he really felt like maximi ...
- 利用JavaScript的%读分秒
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 读书笔记7-浪潮之巅(part2)
浪潮之巅 ——成功的公司各有各的绝招,而失败的公司倒有不少的共同之处 奔腾的芯(Intel) 前身:在处理器性能还很平庸的年代,站在科技前沿的计算机公司都是集中在工作站级处理器领域的,而同IBM.DE ...
- Domain=NSOSStatusErrorDomain Code=1937337955 关于iOS录音AVAudioRecorder与音频播放AVAudioPlayer真机调试录音不能播放的问题
error:Domain=NSOSStatusErrorDomain Code=1937337955 ,这个错误很常见, 原因是因为我们需要调用另外一个AVAudioPlayer 的初始化方法,来确定 ...
- 【转】Oracle基础结构认知—oracle物理结构 礼记八目 2017-12-13 20:31:06
原文地址:https://www.toutiao.com/i6499008214980362765/ oracle数据库启动:oracle服务启动,通过参数文件查找控制文件,启动控制文件,则控制文件调 ...
- 关于MySQL日期操作函数 date_formate 的使用
基本语法:DATE_FORMAT(date,format)说明:date 参数是合法的日期.format 规定日期/时间的输出格式.可以用的格式主要有格式 描述%a 缩写星期名%b 缩写月名%c 月, ...