关于微信小程序上传多张图片的问题

直接帖代码

wxml

<view style="background-color: #ffffff;padding: 30rpx;margin: 25rpx;border-radius: 40rpx;"><view style="display: flex;flex-direction: column;margin-left:30rpx"><view style="display: flex;margin-top: 40rpx;align-items: center;"><view style="margin-right: 70rpx;color: #a8a8a8;word-break: keep-all;">社团名称</view><input bindinput="shetuan_title" placeholder="" maxlength="15" style="border-bottom: 1px solid #a1a1a1;" /></view><view style="display: flex;margin-top: 40rpx;align-items: center;"><view style="margin-right: 70rpx;color: #a8a8a8;word-break: keep-all; ">社团负责人</view><input bindinput="shetuan_fuzeren" placeholder="" maxlength="10" style="border-bottom: 1px solid #a1a1a1;" /></view><view style="display: flex;margin-top: 40rpx;align-items: center;"><view style="margin-right: 70rpx;color: #a8a8a8;word-break: keep-all;">负责人联系方式</view><input bindinput="shetuan_lianxi" placeholder="" maxlength="20" style="border-bottom: 1px solid #a1a1a1;" /></view><view style="display: flex;margin-top: 40rpx;align-items: center;"><view style="margin-right: 70rpx;color: #a8a8a8;word-break: keep-all;">招新群号</view><input bindinput="find_new_number" placeholder="" maxlength="20" style="border-bottom: 1px solid #a1a1a1;" /></view><view style="display: flex;margin-top: 40rpx;align-items: center;"><view style="margin-right: 70rpx;color: #a8a8a8;word-break: keep-all;">社团描述</view><textarea bindinput="description" auto-height="true" maxlength="100" style="border-bottom: 1px solid #a1a1a1;"></textarea></view><view class="imageRootAll"><block wx:for="{{imgList}}" wx:key="index"><view class="imgItem"><image class="img" src='{{item}}' mode='aspectFill'></image><image class="closeImg" bindtap="DeleteImg" src="/images/close.png" data-index="{{index}}" /></view></block><!-- 选择图片按钮 --><view wx:if="{{imgList.length<3}}" class="imgItem" bindtap="ChooseImage"><image class="photo" src="../../../images/photo.png"></image></view></view></view>
</view><button bindtap="{{chongfu==true?'fabu':''}}" type="primary">发布</button>

前端代码不做过多解释,wx:if控制图片添加的隐藏。

js

Page({/*** 页面的初始数据*/data: {imgList: [],shetuan_title: '',shetuan_fuzeren: '',shetuan_lianxi: '',find_new_number: '',description: '',fileIDs: [],chongfu: true},shetuan_title(e) {var title = e.detail.valueconsole.log(title)this.setData({shetuan_title: title})},shetuan_fuzeren(e) {var fuzeren = e.detail.valueconsole.log(fuzeren)this.setData({shetuan_fuzeren: fuzeren})},shetuan_lianxi(e) {var lianxi = e.detail.valueconsole.log(lianxi)this.setData({shetuan_lianxi: lianxi})},find_new_number(e) {var find_new_number = e.detail.valueconsole.log(find_new_number)this.setData({find_new_number: find_new_number})},description(e) {var description = e.detail.valueconsole.log(description)this.setData({description: description})},onLoad(options) {},//选择图片ChooseImage() {wx.chooseImage({count: 6 - this.data.imgList.length, //默认9,我们这里最多选择6张sizeType: ['compressed'], //可以指定是原图还是压缩图,这里用压缩sourceType: ['album', 'camera'], //从相册选择success: (res) => {console.log("选择图片成功", res)if (this.data.imgList.length != 0) {this.setData({imgList: this.data.imgList.concat(res.tempFilePaths)})} else {this.setData({imgList: res.tempFilePaths})}console.log("路径", this.data.imgList)}});},//删除图片DeleteImg(e) {wx.showModal({title: '要删除这张照片吗?',content: '',cancelText: '取消',confirmText: '确定',success: res => {if (res.confirm) {this.data.imgList.splice(e.currentTarget.dataset.index, 1);this.setData({imgList: this.data.imgList})}}})},fabu(e) {var that = thisthis.setData({chongfu: false})setTimeout(function () {that.setData({chongfu: true})}, 1500);//let user = app.globalData.userInfolet account = wx.getStorageSync('account')console.log(account)if (!account || !account.name) {wx.showToast({icon: 'error',title: '请先登陆',})setTimeout(() => {wx.switchTab({url: '/pages/demo04/demo04',})}, 1000);return}if (!this.data.shetuan_title || this.data.shetuan_title.length < 4) {wx.showToast({icon: "error",title: '名称不少于4'})return}if (!this.data.shetuan_fuzeren || this.data.shetuan_fuzeren.length < 1) {wx.showToast({icon: "error",title: '负责人不为空'})return}if (!this.data.shetuan_lianxi || this.data.shetuan_lianxi.length < 1) {wx.showToast({icon: "error",title: '联系方式不为空'})return}if (!this.data.find_new_number || this.data.find_new_number.length < 1) {wx.showToast({icon: "error",title: '群号不为空'})return}if (!this.data.description || this.data.description.length < 1) {wx.showToast({icon: "error",title: '描述不为空'})return}//图片相关let imgList = this.data.imgListif (!imgList || imgList.length < 1) {wx.showToast({icon: "error",title: '请选择图片'})return}// if (!this.data.type || this.data.type == '请选择') {//   wx.showToast({//     icon: "error",//     title: '请选择商品类型'//   })//   return// }// if (!this.data.school || this.data.school == '请选择所属学校') {//   wx.showToast({//     icon: "error",//     title: '请选择学校'//   })//   return// }// if (!this.data.price || parseInt(this.data.price) < 0 || parseInt(this.data.price) > 999999 || parseInt(this.data.price) / 1 !== parseInt(this.data.price)) {//   wx.showToast({//     icon: "error",//     title: '价格不正确'//   })//   return// }// if (!this.data.number || this.data.number < 1 || this.data.number > 999 || parseInt(this.data.number) / 1 !== parseInt(this.data.number) || this.data.number == 0) {//   wx.showToast({//     icon: "error",//     title: '数量不正确'//   })//   return// }// if (!wx.getStorageSync('account').lianxi) {//   wx.showToast({//     icon: "error",//     title: '无联系方式'//   })//   return// }wx.showLoading({title: '申请中...',})var date = new Date();var Y = date.getFullYear();var M = date.getMonth() + 1;var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();var H = date.getHours()var min = date.getMinutes()if (min < 10) {min = '0' + min}if (M < 10) {M = '0' + M}let shetuan_request_time = Y + "-" + M + "-" + D + " " + H + ":" + minconst promiseArr = []//只能一张张上传 遍历临时的图片数组for (let i = 0; i < this.data.imgList.length; i++) {let filePath = this.data.imgList[i]let suffix = /\.[^\.]+$/.exec(filePath)[0]; // 正则表达式,获取文件扩展名//在每次上传的时候,就往promiseArr里存一个promise,只有当所有的都返回结果时,才可以继续往下执行promiseArr.push(new Promise((reslove, reject) => {wx.cloud.uploadFile({cloudPath: '图片/社团/社团上传图片/' + Y + '/' + M + '/' + D + '/' + new Date().getTime() + suffix,filePath: filePath, // 文件路径}).then(res => {// get resource IDconsole.log("上传结果", res.fileID)this.setData({fileIDs: this.data.fileIDs.concat(res.fileID)})reslove()}).catch(error => {console.log("上传失败", error)})}))}//保证所有图片都上传成功let db = wx.cloud.database()Promise.all(promiseArr).then(res => {db.collection('shetuan').add({data: {shetuan_title: this.data.shetuan_title,shetuan_fuzeren: this.data.shetuan_fuzeren,shetuan_lianxi: this.data.shetuan_lianxi,find_new_number: this.data.find_new_number,shetuan_request_time: shetuan_request_time,touxiangurl: wx.getStorageSync('account').touxiangurl,imageurl: this.data.fileIDs,fuzeren_id: wx.getStorageSync('account')._id,school: wx.getStorageSync('account').school,description: this.data.description,member: [],shetuan_request:false,requset_loadding:true//saleid: wx.getStorageSync('account')._id,//lianxi: wx.getStorageSync('account').lianxi,},success: res => {wx.hideLoading()wx.showToast({title: '发布成功',})//清空数据this.setData({imgList: [],fileIDs: [],})console.log('发布成功', res)wx.navigateBack({delta: 1,})},fail: err => {wx.hideLoading()wx.showToast({icon: 'error',title: '网络不给力....'})console.error('发布失败', err)}})})},onReady() {},/*** 生命周期函数--监听页面显示*/onShow() {},/*** 生命周期函数--监听页面隐藏*/onHide() {},/*** 生命周期函数--监听页面卸载*/onUnload() {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh() {},/*** 页面上拉触底事件的处理函数*/onReachBottom() {},/*** 用户点击右上角分享*/onShareAppMessage() {}
})

js段的最重要的地方就是异步请求的处理,把所选照片上传云存储后,获取返回值,找到上传图片路径的字段,返回。

在外部用for循环多次上传图片,再返回图片的url,最后放入一个数组。

在上传图片外部写个promise,把以上操作都包括在内,最后在promise.all中放入上传的代码,保证all之前的操作都已经完成,再进行上传操作。

wxss

.imageRootAll {margin: 6rpx ;display: flex;display: -webkit-flex;flex-direction: row;justify-content: flex-start;align-items: center;flex-wrap: wrap;
}.imgItem {margin: 6rpx;position: relative;width: 200rpx;height: 200rpx;background: gainsboro;margin-top: 50rpx;
}
.img {width: 100%;height: 100%;
}.closeImg {position: absolute;right: 0px;width: 40rpx;height: 40rpx;
}.photo {width: 50%;height: 50%;margin: 25%;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/71014.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSDN写文章上传图片失败原因

问题&#xff1a;PC登录CSDN写作上传图片时&#xff0c;图片格式&#xff0c;大小都符合规范&#xff0c;但上传时一直提示“上传失败&#xff0c;使用谷歌浏览器、IE浏览器、火狐浏览器等问题依旧存在&#xff0c;如下图所示 原因&#xff1a;电脑连接的网络是手机联通的网络&…

[微信小程序] 单张、多张图片上传(图片转base64格式)实践经验

本文首发自个人自有博客&#xff1a;【FaxMiao个人博客】&#xff0c;一个关注Web前端开发技术、关注用户体验、记录前端点滴&#xff0c;坚持更多原创&#xff0c;为大家提供高质量技术博文&#xff01; 定义初始数据&#xff1a; data: {imgList: [], // 图片集合baseImg: […

解决CSDN上传图片失败的问题

最近写博客的时候发现本地图片上传不了的问题&#xff0c;图片大小也没有超过5m&#xff0c;就是上传失败呢 于是找了客服小哥哥or小姐姐已成功解决 1、以记事本的方式打开 C:\Windows\System32\drivers\etc 目录下的 hosts文件 2、添加 49.7.22.7 csdn-img-blog.oss-cn-b…

csdn上传图片过程

CSDN上传图片流程 首先在工具栏里点击富文本编辑器 然后点击图像按钮 然后会出现选择图片的按钮&#xff0c;点击按钮选择你要上传的图片&#xff0c;或者直接将图片复制到标题下方 最后用CV大法&#xff0c;将图片复制到你的文本中&#xff0c;这样基本就可以了 如果出现…

马斯克回应多年前嘲笑比亚迪;360 周鸿祎训练数字人代替演讲;微软发布自己的 Linux | 极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 苏宓 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#xf…

chatgpt赋能python:Python验证码校验程序介绍

Python 验证码校验程序介绍 随着网络的发展和普及&#xff0c;大量的网站需要使用验证码来防止机器人攻击。验证码技术在保证网络安全方面起到了关键作用。Python 作为一种高级编程语言&#xff0c;在验证码校验程序中也得到了广泛的应用。 Python 的验证码校验程序是一种基于…

【1】VScode 中文界面方法-------超简单教程

相关文章&#xff1a; 【一】tensorflow安装、常用python镜像源、tensorflow 深度学习强化学习教学 【二】tensorflow调试报错、tensorflow 深度学习强化学习教学【三】tensorboard安装、使用教学以及遇到的问题【四】超级快速pytorch安装 【1】VScode中文界面方法-------…

chatgpt赋能python:Python读取GBK编码文本文件的方法

Python读取GBK编码文本文件的方法 在中文环境中&#xff0c;GBK编码是一种常见的字符集&#xff0c;因此&#xff0c;在使用Python处理中文文本时&#xff0c;我们经常需要读取GBK编码的文本文件。本文将介绍Python读取GBK编码文本文件的方法&#xff0c;以帮助Python开发者更…

电子科技大学格拉斯哥学院基础实践————寝室情况及存在问题

** 电子科技大学格拉斯哥学院基础实践————寝室情况及存在问题 ** 调查报告小组人数&#xff1a;5人 小组成员&#xff1a; 刘浩宇 2018190607034 李子贤 2018190607014 夏侯淏 2018190607022 刘思言 2018190607026 梁渝佩 2018190607032 所在学院&#xff1a;格拉斯哥学院…

电子科技大学 格院实践 大学生上网娱乐时间

调查报告小组&#xff1a;4人小组成员&#xff1a;王伯文2018190607021包经纬2018190607011袁晨 2018190607001 孙一飞 2018190607023所在学院&#xff1a;格拉斯哥学院年级及专业&#xff1a;2018级 通信七班摘要&#xff1a;网络已成为现代生活中必不可少的一部分&#xff0…

有python专业的世界大学_2020年QS计算机专业排名进入世界前50的,除了G5,还有这所大学!...

上周&#xff0c;QS最新的世界大学专业排名出炉&#xff0c;计算机科学与信息系统方向&#xff0c;英国共有50所大学上榜&#xff0c;其中排名世界前50的有5所&#xff0c;分别是牛津大学、剑桥大学、帝国理工学院、UCL、爱丁堡大学。 完整榜单如下&#xff1a; 爱丁堡大学作为…

2020ubc大学计算机硕士录取条件,2020Fall录取|研究牛校UA阿尔伯塔大学计算机硕士两年全奖!...

2020Fall正在进行时&#xff0c; 君明offer收不停~ 恭喜君明学子T同学收到 阿尔伯塔大学 计算机硕士项目offer两年全额奖学金 祝贺祝贺&#xff01; OFFER -展示- 学校概况 阿尔伯塔大学(University of Alberta)简称UA&#xff0c;坐落于加拿大阿尔伯塔省, 是一所历史悠久的世界…

基于miu小波变换的人体步态数据检测和识别算法matlab仿真

目录 一、理论基础 3.2.1加速度计 3.2.2陀螺仪 3.3基于IMU设备的人体步态数据的采集 二、MATLAB仿真程序 三、仿真结果 一、理论基础 在进行数据采集的过程中&#xff0c;需要根据实际情况选择合适的采集设备&#xff0c;现有的采集设备一般都是由多个传感器模块、显示…

java大学学费400_中国大学学费一览表:2019年全国大学最新收费参考

2.中国各大学最新收费标准是怎样的 以下是整理的全国各省市高校学费表&#xff0c;供参考! 3.一本二本学费上有差别吗 一本、二本大学学费一般在5000-6000之间。一本、二本的个别专业(外语、艺术等)8000到10000。主要区别要看学校所处的位置&#xff0c;及专业所用的教学设备。…

上周,劝退十几个了。。。

今天还是想给大家好好聊聊我们星球。 很多人不知道&#xff0c;加入知识星球3天内如果不满意&#xff0c;可以无理由退款的&#xff0c;所以3天内很多小伙伴都被我们劝退了。 就在上周劝退了十几个&#xff0c;特别是为了账号的那些人&#xff0c;我们也直接劝退了。 其实做星球…

oobabooga-text-generation-webui可能是最好的语言模型启动器(包含手把手安装教程)

原文&#xff1a;oobabooga-text-generation-webui可能是最好的语言模型启动器&#xff08;包含手把手安装教程&#xff09; - 哔哩哔哩 引言&#xff1a; 问&#xff1a;oobabooga是什么&#xff1f; oobabooga-text-generation-webui是一个用于运行类似Chatglm、RWKV-Rave…

智能机器人嵌入ChatGPT会给社会带来哪些进步

智能机器人技术在当今世界中扮演着越来越重要的角色&#xff0c;而其中一个令人印象深刻的例子就是ChatGPT。ChatGPT是一种基于人工智能的对话系统&#xff0c;它利用强大的自然语言处理和生成模型&#xff0c;可以与人类进行自然而流畅的对话。ChatGPT内置了智能机器人技术&am…

淘宝API接口:item_search - 按关键字搜索淘宝商品

淘宝的API开发接口&#xff0c;我们需要做下面几件事情。 1&#xff09;开放平台注册开发者账号&#xff1b; 2&#xff09;然后为每个淘宝应用注册一个应用程序键&#xff08;App Key) &#xff1b; 3&#xff09;下载淘宝API的SDK并掌握基本的API基础知识和调用&#xff1b; …

API接口名称(item_search - 按关键字搜索淘宝商品)[item_search,item_get,item_search_shop等]

请求参数&#xff1a;q女装&start_price0&end_price0&page1&cat0&discount_only&sort&page_size&seller_info&nick&ppath&imgid&filter 参数说明&#xff1a;q:搜索关键字 cat:分类ID start_price:开始价格 end_price:结束价…

淘宝关键词搜索分析商品价格走势(商品列表接口,销量接口,价格接口,分类ID精准商品数据接口)接口代码对接

淘宝 OpenAPI&#xff08;Open application programming interface&#xff09;是一套 REST 方式的开放应用程序编程接口。淘宝网根据自己提供的电子商务基础服务&#xff0c;抽象并做成一系列的 API 接口。通过这些接口&#xff0c;可以让外部用户能够通过程序的方式访问淘宝网…