wxml:

  1. <view class='imgBox'>
  2. <image class='imgList' wx:for="{{imgs}}" wx:for-item="item" src='{{item}}' data-index="{{index}}" wx:key="*this" bindtap="previewImg">
  3. <icon class='imgCancel' type="clear" size='25' data-index="{{index}}" catchtap="deleteImg"></icon>
  4. </image>
  5. <image src='../../images/ic_pic.png' bindtap='addImg' wx:if="{{isShowAdd}}" ></image>
  6. </view>

wxss:

  1. .imgBox{
  2. padding: 25rpx 0rpx;
  3. }
  4. .imgBox image{
  5. width: 200rpx;
  6. height: 200rpx;
  7. margin-right: 15rpx;
  8. }
  9. .imgBox .imgList{
  10. position: relative;
  11. }
  12. .imgBox .imgList .imgCancel{
  13. position: absolute;
  14. top: 0rpx;
  15. right: 0rpx;
  16. }

js:countNum 和 max值可根据自己的需求更改,但是二者的值须相同

  1. Page({
  2. data: {
  3. isShowAdd:true,
  4. imgs: [],
  5. countNum:3, //设定一次性选择图片的上限值
  6. max:3 //设定上传图片总数的上限值,与countNum相同
  7. },
  8. //添加图片
  9. addImg: function (e) {
  10. var that = this;
  11. wx.chooseImage({
  12. count: that.data.countNum, // 上传图片上限值
  13. sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
  14. sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
  15. success: res => {
  16. wx.showToast({
  17. title: '正在上传...',
  18. icon: 'loading',
  19. mask: true,
  20. duration: 1000
  21. })
  22. // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
  23. var tempFilePaths = res.tempFilePaths;
  24. var imgs=that.data.imgs;
  25. for (var i = 0; i < tempFilePaths.length; i++) {
  26. if (imgs.length >= that.data.max) {
  27. that.setData({
  28. imgs: imgs
  29. });
  30. return false;
  31. } else {
  32. imgs.push(tempFilePaths[i]);
  33. //上传图片达到上限count值时,隐藏添加按钮
  34. if (imgs.length >= that.data.max){
  35. that.setData({
  36. isShowAdd: false
  37. });
  38. }
  39. }
  40. }
  41. that.setData({
  42. imgs: imgs,
  43. countNum: that.data.max-imgs.length //每增加一张图片,动态计算还可添加照片的数量
  44. })
  45. }
  46. })
  47. },
  48. // 预览图片
  49. previewImg: function (e) {
  50. //获取当前图片的下标
  51. var index = e.currentTarget.dataset.index;
  52. //所有图片
  53. var imgs = this.data.imgs;
  54. wx.previewImage({
  55. //当前显示图片
  56. current: imgs[index],
  57. //所有图片
  58. urls: imgs
  59. })
  60. },
  61. // 删除图片
  62. deleteImg: function (e) {
  63. console.log("删除图片")
  64. var imgs = this.data.imgs;
  65. var index = e.currentTarget.dataset.index;
  66. imgs.splice(index, 1);
  67. this.setData({
  68. imgs: imgs,
  69.     countNum: this.data.max-imgs.length
  70.   })
  71. if(imgs.length<this.data.max){
  72. this.setData({
  73. isShowAdd: true
  74. })
  75. }
  76. },
  77. })

效果展示:

1 )图片未达上限

2 )图片已达到上限,隐藏添加按钮(ic_pic.png)

微信小程序实现图片上传,预览,删除的更多相关文章

  1. 微信小程序--背景图片手机无法预览

    目前小程序好像没有支持手机预览背景本地图片,所以将本地图片改为网络图片链接就可以了 background: url("https://..../img/no.png") no-re ...

  2. [转]微信小程序实现图片上传功能

    本文转自:http://blog.csdn.net/feter1992/article/details/77877659 前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何 ...

  3. nodeJs实现微信小程序的图片上传

    今天我来介绍一下nodejs如何实现保存微信小程序传过来的图片及其返回 首先wx.uploadFile绝大部分时候是配合wx.chooseImage一起出现的,毕竟选择好了图片,再统一上传是实现用户图 ...

  4. 微信小程序实现图片上传功能

    前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何实现上传图片到自己的服务器上 前端代码 data: { productInfo: {} }, //添加Banner bin ...

  5. 微信小程序--实现图片上传

    前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何实现上传图片到自己的服务器上 前端代码 data: { productInfo: {} }, //添加Banner bin ...

  6. 微信小程序中图片上传阿里云Oss

    本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发.最近工作遇到一个小问题. 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意去记录一下. 第一步:配置阿里云地址: 我 ...

  7. 微信小程序 实现图片上传并展示到前端(多文件)并实现表单提交验证

    链接: https://blog.csdn.net/guanj0623/article/details/121595884?spm=1001.2014.3001.5501 https://blog.c ...

  8. 小程序实现图片上传,预览以及图片base64位处理

    最近一段时间在做小程序项目,第一期功也完工了.需要好好总结一下经验,把项目中遇到的问题好好总结一下,遇到的问题,踩过的坑.今天写一个小程序实现图片上传,预览,以及删除,图片base64位处理.下面就是 ...

  9. ASP.NET工作笔记之一:图片上传预览及无刷新上传

    转自:http://www.cnblogs.com/sibiyellow/archive/2012/04/27/jqueryformjs.html 最近项目里面涉及到无刷新上传图片的功能,其实也就是上 ...

随机推荐

  1. Codeforces Gym 101142 G Gangsters in Central City (lca+dfs序+树状数组+set)

    题意: 树的根节点为水源,编号为 1 .给定编号为 2, 3, 4, …, n 的点的父节点.已知只有叶子节点都是房子. 有 q 个操作,每个操作可以是下列两者之一: + v ,表示编号为 v 的房子 ...

  2. 使用thymeleaf实现div中加载html

    目标:固定顶部或者左侧导航,点击导航动态更新中间content区域的页面,也就是在放一个div在页面上,把html加载到div里,以前类似的实现都是通过Iframe或者js实现,在使用springbo ...

  3. 【题解】Uoj79一般图最大匹配

    带花树裸题,感觉带花树强强……不会的勿看此文,解释的可能不对,只是给自己看的!!!如题,带花树即为求一般图最大匹配算法(匈牙利与dinic为二分图最大匹配).推荐论文:2015年<浅谈图的匹配算 ...

  4. [luogu5048] [Ynoi2019模拟赛] Yuno loves sqrt technology III

    题目链接 洛谷. Solution 思路同[BZOJ2724] [Violet 6]蒲公英,只不过由于lxl过于毒瘤,我们有一些更巧妙的操作. 首先还是预处理\(f[l][r]\)表示\(l\sim ...

  5. [洛谷P5091]【模板】欧拉定理

    题目大意:求$a^b\bmod m(a\leqslant10^9,m\leqslant10^6,b\leqslant10^{2\times10^7})$ 题解:扩展欧拉定理:$$a^b\equiv\b ...

  6. 【以前的空间】Poj 3071 Cut the Sequence

    dp+单调性+平衡树 在看某篇论文中看到这道题,但是那篇论文不如这个http://www.cnblogs.com/staginner/archive/2012/04/02/2429850.html 大 ...

  7. POJ 2728 Desert King | 01分数规划

    题目: http://poj.org/problem?id=2728 题解: 二分比率,然后每条边边权变成w-mid*dis,用prim跑最小生成树就行 #include<cstdio> ...

  8. 使用py-faster-rcnn训练VOC2007数据集时遇到问题

    使用py-faster-rcnn训练VOC2007数据集时遇到如下问题: 1. KeyError: 'chair' File "/home/sai/py-faster-rcnn/tools/ ...

  9. ufw坑

    ufw就是一个iptables的快捷应用.今天被这个给坑了. 一个同时没事随便修改ufw,结果ssh登陆不上,ldap什么的都被阻断了. 直接iptables -F,结果忘了修改policy,直接没法 ...

  10. xml 通过正则抓取字段

    $str = '<xml> <appid><![CDATA[wxd49ea66070209a6e]]></appid> <bank_type> ...