微信小程序实现上传图片功能[通俗易懂]

微信小程序实现上传图片功能[通俗易懂]效果图WXML<viewclass=”img-wrap”><viewclass=”txt”>上传截图</view><viewclass=”imglist”><viewclass=”item”wx:for=”{{imgs}}”wx:key=”item”><imagesrc=”{{item}}”alt=””></image><viewclass=’d

大家好,又见面了,我是你们的朋友全栈君。

效果图

微信小程序实现上传图片功能[通俗易懂]微信小程序实现上传图片功能[通俗易懂]微信小程序实现上传图片功能[通俗易懂]

WXML

<view class="img-wrap">
  <view class="txt">上传图片</view>
  <view class="imglist">
    <view class="item" wx:for="{ 
    {imgs}}" wx:key="item">
      <image src="{ 
    {item}}" alt=""></image>
      <view class='delete' bindtap='deleteImg' data-index="{ 
    {index}}">
        <image src="../../../images/icon.png"></image>
      </view>
    </view>
    <view class="last-item" wx:if="{ 
    {imgs.length >= 3 ? false : true}}" bindtap="bindUpload">
      <text class="sign">+</text>
    </view>
  </view>
</view>

JS

data: { 
   
  imgs: [],
  count: 3
},
bindUpload: function (e) { 
   
  switch (this.data.imgs.length) { 
   
    case 0:
      this.data.count = 3
      break
    case 1:
      this.data.count = 2
      break
    case 2:
      this.data.count = 1
      break
  }
  var that = this
  wx.chooseImage({ 
   
    count: that.data.count, // 默认3
    sizeType: ["original", "compressed"], // 可以指定是原图还是压缩图,默认二者都有
    sourceType: ["album", "camera"], // 可以指定来源是相册还是相机,默认二者都有
    success: function (res) { 
   
      // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
      var tempFilePaths = res.tempFilePaths
      for (var i = 0; i < tempFilePaths.length; i++) { 
   
        wx.uploadFile({ 
   
          url: 'https://graph.baidu.com/upload',
          filePath: tempFilePaths[i],
          name: "file",
          header: { 
   
            "content-type": "multipart/form-data"
          },
          success: function (res) { 
   
            if (res.statusCode == 200) { 
   
              wx.showToast({ 
   
                title: "上传成功",
                icon: "none",
                duration: 1500
              })

              that.data.imgs.push(JSON.parse(res.data).data)

              that.setData({ 
   
                imgs: that.data.imgs
              })
            }
          },
          fail: function (err) { 
   
            wx.showToast({ 
   
              title: "上传失败",
              icon: "none",
              duration: 2000
            })
          },
          complete: function (result) { 
   
            console.log(result.errMsg)
          }
        })
      }
    }
  })
},
// 删除图片
deleteImg: function (e) { 
   
  var that = this
  wx.showModal({ 
   
    title: "提示",
    content: "是否删除",
    success: function (res) { 
   
      if (res.confirm) { 
   
        for (var i = 0; i < that.data.imgs.length; i++) { 
   
          if (i == e.currentTarget.dataset.index) that.data.imgs.splice(i, 1)
        }
        that.setData({ 
   
          imgs: that.data.imgs
        })
      } else if (res.cancel) { 
   
        console.log("用户点击取消")
      }
    }
  })
}

WXSS

.wrap { 
   
  width: 100%;
  padding: 0 30rpx;
  box-sizing: border-box;
}
.wrap .img-wrap { 
   
  font-size: 30rpx;
  color: #33373E;
  margin-bottom: 10rpx;
}
.wrap .img-wrap .txt { 
   
  margin-bottom: 20rpx;
}
.wrap .img-wrap .imglist { 
   
  display: flex;
  flex-wrap: wrap;
}
.wrap .img-wrap .imglist .item { 
   
  width: 150rpx;
  height: 150rpx;
  margin-right: 22rpx;
  margin-bottom: 10rpx;
  position: relative;
}
.wrap .img-wrap .imglist .last-item { 
   
  width: 150rpx;
  height: 150rpx;
  text-align: center;
  line-height: 146rpx;
  border: 2rpx dashed #8B97A9;
  box-sizing: border-box;
}
.wrap .img-wrap .imglist .item image { 
   
  width: 100%;
  height: 100%;
}
.wrap .img-wrap .imglist .item .delete { 
   
  width: 30rpx;
  height: 30rpx;
  position: absolute;
  top: -14rpx;
  right: -12rpx;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150595.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • leetcode 接雨水2_leetcode会议室

    leetcode 接雨水2_leetcode会议室题目链接给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9 提示:n == height.length0 <= n &lt

    2022年8月8日
    0
  • Node.js的安装及环境配置【超详细】

    Node.js的安装及环境配置【超详细】Step1:去官网下载安装包下载方式1:官网下载根据自己电脑系统及位数选择。注意:图中.msi和.zip格式区别:1、.msi是Windowsinstaller的数据包,实际上是一个数据库,提供安装,修改,卸载你所安装的程序。此外:它还包含有关安装过程本身的信息。例如:安装序列、目标文件夹路径、安装选项和控制安装过程的属性。2、.zip是一个压缩包,解压之后即可,不需要安装。…

    2022年6月11日
    36
  • Java手机游戏开发专辑「建议收藏」

    Java手机游戏开发专辑「建议收藏」Java手机游戏开发专辑  关键字 KXML MMAPI HTTP XML CLDC   移动动作游戏开发中的一些问题  即使目前最新型号的手机仍然不是最理想的游戏平台,但它已经是个良好的开端。处理器、内存和色彩深度提供了游戏开发所需的因素。开发者正努力把其它游戏平台上的质量标准运用到这个平台上。当然了,一些问题仍然存在,然而这些问题终将被解决,就象PC平台游戏开发者使用不断改进的Di

    2022年5月27日
    32
  • wamp apache无法启动的解决方法

    wamp apache无法启动的解决方法

    2021年9月20日
    73
  • session、cookie、token 详解

    发展史1、很久很久以前,Web基本上就是文档的浏览而已,既然是浏览,作为服务器,不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议,就是请求加响应,尤其是我不用记住是谁刚刚发了HTTP请求,每个请求对我来说都是全新的。这段时间很嗨皮2、但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,…

    2022年4月6日
    51
  • 各种开源数据库同步工具汇总

    (1)OGGOracleGoldenGate是一款实时访问、基于日志变化捕捉数据,并且在异构平台之间迚行数据传输的产品。GoldenGateTDM是一种基于软件的数据复制方式,它从数据库的日志解析数据的变化(数据量只有日志的四分之一左右)。GoldenGateTDM将数据变化转化为自己的格式,直接通过TCP/IP网络传输,无需依赖于数据库自身的传递方式,而且可以通过高达10:1的压缩率对数据迚行压缩,可以大大降低带宽需求。在目标端,GoldenGateTDM可以通过交易重组,分批加载等技术手

    2022年4月4日
    298

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号