【微信小程序原生】上传图片

本文介绍了一个使用微信小程序实现的图片上传组件,用户可以上传5张图片,展示在页面上,并能预览和删除。通过JS和CSS代码展示了如何实现选择图片、图片预览和删除功能的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

view

<view class="flex-wrap">
	 <view class="iconfont icon-camera" bindtap='upload' wx:if="{{imgArr.length < 5}}"></view>
		 <view class="relative" wx:for="{{imgArr}}" wx:key="item">
	 	 	<text class="iconfont icon-guanbi color-style" data-index='{{index}}' catchtap='deleteImg'></text>
		  <image mode="aspectFit" src="{{item}}" bindtap="preview" data-src="{{item}}" alt="图片"/>
	 </view>
</view>

css

.flex-wrap{
    display: flex;
    justify-content: flex-start;
    flex-wrap: wrap;
}
.icon-guanbi.color-style {
    color: #000 !import;
    font-size: 40rpx;
    position: absolute;
    right: 4rpx;
    top: 4rpx;
    font-size: 80rpx;
    color: #fff;
}
.icon-camera{
    color: #6C6F82;
}
.icon-camera, .flex-wrap image{
    font-size: 72rpx;
    border: 2rpx solid #eee;
    border-radius: 20rpx;
    width: 156rpx;
    height: 156rpx;
    text-align: center;
    line-height: 156rpx;
    margin-top: 20rpx;
    margin-right: 20rpx;
}
.flex-wrap .relative{
    position: relative;
}

js


data: {
   imgArr: []
}

  //选择要上传的图片
  upload () {
    var that = this;
    // 最好只能选5张
    if (that.data.imgArr&&that.data.imgArr.length < 5) {
      wx.chooseImage({
        count: 5 - that.data.imgArr.length, // 默认9
        sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
        sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
        success: (res) => {
          that.setData({
            imgArr: that.data.imgArr.concat(res.tempFilePaths)
          })
        }
      })
    } else {
      wx.showToast({
        title: '最多上传五张图片',
        icon: 'none',
        duration: 3000
      });
    }
  },
   // 预览图片,放大预览
   preview(event) {
    console.log(event.currentTarget.dataset.src)
    let currentUrl = event.currentTarget.dataset.src
    wx.previewImage({
      current: currentUrl, // 当前显示图片的http链接
      urls: this.data.imgArr // 需要预览的图片http链接列表
    })
  },
  // 删除图片
  deleteImg (e) {
    var that=this;
    var index = e.currentTarget.dataset.index;
    const pictureArr = that.data.imgArr[index].split('/')
    that.data.imgArr.splice(index, 1)
    that.setData({
       imgArr: that.data.imgArr || []
    })
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值