微信小程序实现上传多张图片、删除图片


Posted in Javascript onJuly 29, 2020

最近在做微信小程序,遇到上传多张图片到服务器,计算上传图片的张数,并且可以手动删除图片,下面是效果图

效果图:

微信小程序实现上传多张图片、删除图片

本来用的是小程序提供的 mp-uploader 上传图片的组件,无奈次组件删除效果不是我想要的,只能用 wx.chooseImage进行上传图片,在使用uplaodFile将图片发送给后台服务器。

下面直接展示代码:

wxml:

<view class="con_titles">
 <view class="con_left">
 <image src="../../images/comint.png"></image>
 <text class="titles_t">患者病历</text>
 </view>
 <view class="img_num">{{imgShow.length}}/6</view>
 
 </view>
 <view class="page__bd">
 <!-- <mp-uploader style='color:#353535' bindfail="uploadError" bindsuccess="uploadSuccess" select="{{selectFile}}" upload="{{uplaodFile}}" files="{{files}}" max-count="6" title="患者病历"></mp-uploader> -->
 
 <view class="add-image">
 <view class="images-boxc" wx:for="{{imgShow}}" wx:for-item="item" wx:key="image">
 <image class="image_size" data-index="{{index}}" data-src="{{item}}" src="{{item}}" bindtap="clickImage"></image>
 <image class="delete-image" data-index="{{index}}" src="../../images/delete_img.png" bindtap="deleteImage"></image>
 </view>
 <view class="images-add" wx:if="{{imgShow.length<6}}">
 <image class="image_size image_sizen" src="../../images/add_img.png" bindtap="chooseImage"></image>
 </view>
 </view>
</view>

wxss:

/* 上传图片 */
.images-boxc {
 position: relative;
 border: dashed 1px #bfbfbf;
 width: 139rpx;
 height: 139rpx;
 margin-right: 32rpx;
 margin-bottom: 32rpx;
}
.delete-image {
 position: absolute;
 width: 30rpx;
 height: 30rpx;
 right: 16rpx;
 top: 16rpx;
}
.add-image {
 display: flex;
 flex-wrap: wrap;
}
.image_size {
 width: 139rpx;
 height: 139rpx;
}
.image_sizen {
 height: 142rpx;
}

js:

data: {
 count: 6, //设置最多6张图片
 
 allImg: [],
 imgShow: [],
 
 },
// 上传图片
 chooseImage: function() {
 wx.showLoading({
 title: '加载中...',
 mask: true
 })
 var that = this;
 var imgShow = that.data.imgShow;
 var count = that.data.count - imgShow.length; //设置最多6张图片
 wx.chooseImage({
 count: count,
 sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
 success: function(res) {
 console.log(res)
 that.uplaodFile(res)
 for (var i = 0, h = res.tempFilePaths.length; i < h; i++) {
 imgShow.push(res.tempFilePaths[i]);
 that.setData({
 imgShow: imgShow
 })
 }
 wx.hideLoading({
 title: '加载中...',
 mask: false
 })
 
 }
 })
 },
 // 删除图片
 deleteImage(e) {
 let self = this;
 let index = e.target.dataset.index;
 let imgShow = self.data.imgShow;
 let allImg = self.data.allImg;
 allImg.splice(index, 1);
 imgShow.splice(index, 1);
 this.setData({
 imgShow: imgShow,
 allImg: allImg
 })
 },
 previewImage: function(e) {
 console.log(this.data.files)
 wx.previewImage({
 current: e.currentTarget.id, // 当前显示图片的http链接
 urls: this.data.files // 需要预览的图片http链接列表
 })
 },
 selectFile(files) {
 console.log('files', files)
 // 返回false可以阻止某次文件上传
 },
 uplaodFile(files) {
 console.log('upload files', files)
 let that = this
 files.tempFilePaths.forEach(element => {
 util.uploadFile('/fastdfsServer/fileUpload', element, 'file', {}, function(res) { //上传本地图片地址到服务器 返回地址 存放到input提交时取值
 res = JSON.parse(res);
 if (res.responseCode == 0) {
 sysMsg.sysMsg("上传成功", 1000, 'success');
 that.setData({
 allImg: that.data.allImg.concat(res.responseBody)
 });
 } else {
 sysMsg.sysMsg("上传失败", 1500, 'error');
 }
 });
 
 });
 // 文件上传的函数,返回一个promise
 return new Promise((resolve, reject) => {
 resolve({
 urls: files.tempFilePaths
 });
 setTimeout(() => {
 reject('some error')
 }, 10000)
 
 })
 
 },
 uploadError(e) {
 console.log('upload error', e.detail)
 },
 uploadSuccess(e) {
 // this.setData({
 // allImg: this.data.allImg.concat(e.detail.urls[0])
 // });
 console.log('upload success', e.detail, e.detail.urls)
 
},

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js计算页面执行时间的函数
Dec 07 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
Jun 18 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
Mar 21 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
Mar 29 Javascript
js关闭当前页面(窗口)的几种方式总结
Mar 05 Javascript
jquery中的$(document).ready()使用小结
Feb 14 Javascript
JavaScript中扩展Array contains方法实例
Aug 23 Javascript
详解AngularJS Filter(过滤器)用法
Dec 28 Javascript
深入理解javascript中concat方法
Dec 12 Javascript
vue中计算属性(computed)、methods和watched之间的区别
Jul 27 Javascript
一文让你彻底搞清楚javascript中的require、import与export
Sep 24 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
Dec 20 Javascript
js模拟实现百度搜索
Jun 28 #Javascript
微信小程序地图实现展示线路
Jul 29 #Javascript
vuex实现购物车的增加减少移除
Jun 28 #Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 #Javascript
vuex实现购物车功能
Jun 28 #Javascript
JavaScript图像放大镜效果实现方法详解
Jun 28 #Javascript
详细分析Node.js 模块系统
Jun 28 #Javascript
You might like
COM in PHP (winows only)
2006/10/09 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
javascript EXCEL 操作类代码
2009/07/30 Javascript
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
js原型继承的两种方法对比介绍
2014/03/30 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
vue v-model的用法解析
2020/10/19 Javascript
[37:37]DAC2018 4.4 淘汰赛 Optic vs Mineski 第二场
2018/04/05 DOTA
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
python中的json总结
2018/10/11 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
200行python代码实现2048游戏
2019/07/17 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
python对一个数向上取整的实例方法
2020/06/18 Python
Python grpc超时机制代码示例
2020/09/14 Python
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
高中生自我评价个人范文
2013/11/09 职场文书
安全教育心得体会
2013/12/29 职场文书
先进班集体申报材料
2014/12/26 职场文书
2015年复活节活动总结
2015/02/27 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
升学宴学生致辞
2015/07/27 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript