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

本文首发自个人自有博客:【FaxMiao个人博客】,一个关注Web前端开发技术、关注用户体验、记录前端点滴,坚持更多原创,为大家提供高质量技术博文!

定义初始数据:

data: {imgList: [], // 图片集合baseImg: [], // base64图片集合maxImg: 8, // 图片上传最高数量(根据需求设置)
}

第一步:从本地相册选择图片或使用相机拍照(wx.chooseImage)

// 选择图片
selectPictures: function() {const that = this;// 最多上传图片数量if (that.data.imgList.length < that.data.maxImg) {wx.chooseImage({count: that.data.maxImg - that.data.imgList.length, // 最多可以选择的图片张数(最大数量-当前已上传数量)sizeType: "compressed",success: function(res) {for (let i = 0; i < res.tempFilePaths.length; i++) {that.data.imgList.push(res.tempFilePaths[i]);}// 显示图片(同步渲染到页面)that.setData({imgList: that.data.imgList})}})} else {wx.showToast({title: "最多上传" + that.data.maxImg + "张照片!"})}
}

count:最多可以选择的图片张数(默认9)
sizeType:所选的图片的尺寸(original-原图,compressed-压缩图)
sourceType:选择图片的来源(album-从相册选图,camera-使用相机)

第二步:将图片本地路径转为base64图片格式(​wx.getFileSystemManager().readFile)

// 图片转base64
conversionAddress: function() {const that = this;// 判断是否有图片if (that.data.imgList.length !== 0) {for (let i = 0; i < that.data.imgList.length; i++) {// 转base64wx.getFileSystemManager().readFile({filePath: that.data.imgList[i],encoding: "base64",success: function(res) {that.data.baseImg.push('data:image/png;base64,' + res.data);//转换完毕,执行上传if (that.data.imgList.length == that.data.baseImg.length) {that.upCont(that.data.textCont, that.data.baseImg);}}})}}else {wx.showToast({title: "请先选择图片!"})}
}

filePath:要读取的文件的路径 (本地路径)
encoding:指定读取文件的字符编码(ascii,base64,binary,hex…)

第三步:执行上传,把图片数组传输给后端即可

// 执行上传
upCont: function (baseImg) {const that = this;wx.request({url: "上传地址",method: "POST",data: {imglist: baseImg},success: function (res) {if (res.data.code == 200) {wx.showModal({title: "提示",content: "提交成功,棒棒哒!"})// 清空当前数据that.data.imgList = [];} else {wx.showModal({title: "提示",content: "上传失败!"})}}})
}

删除功能:被选中图片移除当前图片数组

// 删除图片(选中图片移除)
delImg: function(e) {const that = this;const index = e.currentTarget.dataset.index; // 当前点击图片索引that.data.imgList.splice(index, 1);that.setData({imgList: that.data.imgList})
}

tips:
点击提交按钮后可以增加显示loading提示框:wx.showLoading(),返回结果后隐藏loading提示框:wx.hideLoading(),此方法可以避免重复点击!

效果图:
在这里插入图片描述
完整代码:
1.js代码(直接复制文中代码即可)
2.wxml

<view class="img-list"><view class="txt">图片 {{imgList.length}} / {{maxImg}}</view><view class="list"><!-- 图片展示列表 --><view class="li" wx:for="{{imgList}}" wx:key="index"><image class="file" src="{{item}}"></image><!-- 删除图片 --><image class="close" src="/images/close.png" data-index="{{index}}" bindtap="delImg"></image></view><!-- 添加图片 --><view class="li" bindtap="selectPictures"><image class="file" src="/images/upload.jpg"></image></view></view>
</view>
<view class="btn" bindtap="conversionAddress">提 交</view>

3.wxss

.img-list{ width: 700rpx; margin: 0 auto;}
.img-list .txt{ width: 680rpx; padding: 40rpx 0 20rpx; margin: 0 auto; color: #b2b2b2;}
.img-list .list{ width: 700rpx; overflow: hidden;}
.img-list .list .li{ width: 160rpx; margin: 10rpx 0 0 10rpx; height: 160rpx; border: 1rpx solid #fff;
float: left; position: relative;}
.img-list .list .li:last-child{ border: 1rpx solid #f7f7f7;}
.img-list .list .li .file{ display: block; width: 160rpx; height: 160rpx;}
.img-list .list .li .close{ position: absolute; top: 0; right: 0; width: 44rpx; height: 44rpx; background: #fff;}.btn{ background: #f60; width: 680rpx; border-radius: 10rpx; line-height: 88rpx;
color: #fff; text-align: center; margin: 50rpx auto 0;}

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

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

相关文章

解决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;可以让外部用户能够通过程序的方式访问淘宝网…

淘宝排名查询接口,关键词排名API,宝贝排名查询,在线淘宝排名查询

功能 1.查询商品在指定关键词下的排名情况&#xff0c;商家推广过程中&#xff0c;需要实时掌握商品排名变化&#xff0c;以此来检测推广效果。W&#xff1a;stkjnannan,价格可低至几分钱 2.手动在淘宝搜索页翻查排名&#xff0c;如果商品排名靠后&#xff0c;查找会耗费大量时…

淘宝天猫api按关键词搜索商品

onebound.taobao.item_search 注册获取api测试 返回数据说明 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,ite…