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


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 相关文章推荐
广告显示判断
Aug 31 Javascript
基于jquery跨浏览器显示的file上传控件
Oct 24 Javascript
JQuery中SetTimeOut传参问题探讨
May 10 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
Jan 02 Javascript
基于Css3和JQuery实现打字机效果
Aug 11 Javascript
新手学习前端之js模仿淘宝主页网站
Oct 31 Javascript
原生Javascript插件开发实践
Jan 18 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 jQuery
微信小程序实现banner图轮播效果
Jun 28 Javascript
聊聊鉴权那些事(推荐)
Aug 22 Javascript
微信小程序文章列表功能完整实例
Jun 03 Javascript
React实现全选功能
Aug 25 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
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
js中split和replace的用法实例
2015/02/28 Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
2015/11/04 Javascript
在JavaScript中调用Java类和接口的方法
2016/09/07 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
深入解读Python解析XML的几种方式
2016/02/16 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
wxPython实现带颜色的进度条
2019/11/19 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
python numpy数组中的复制知识解析
2020/02/03 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
Python urllib.request对象案例解析
2020/05/11 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
Python2与Python3关于字符串编码处理的差别总结
2020/09/07 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
大学生四个方面的自我评价
2013/09/19 职场文书
组织关系转移介绍信
2014/01/16 职场文书
交通志愿者活动总结
2014/06/27 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
英文升职感谢信
2015/01/23 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
诗词赏析-(浣溪沙)
2019/08/13 职场文书