• 微信小程序上传图片


    效果展示:

    代码展示:

    //提前定义全局数组
    var arr = [];
    
    data(){
          //被选中的图片路径数组
         imgList:[] 
    }
    //上传图片
      handleUploadimg() {
        //判断当前数组长度大于三的时候不执行上传图片
        if (this.data.imgList.length === 3) {
          wx.showToast({
            title: "最多只可以上传三张图片",
            icon: 'none',
            mask: true
          })
          return
        } else {
          //调用小程序内置api
          wx.chooseImage({
            //定义最大上传长度  tip:采取动态的长度,直接写具体数字,当用户提前拍摄一张照片的时候,之后继续上传导致第一张不会被计算到数组中
             count: 3 - this.data.imgList.length,
            //图片的格式
            sizeType: ['original', 'compressed'],
            //图片来源
            sourceType: ['album', 'camera'],
            success: (result) => {
              result.tempFilePaths.forEach((v,i)=>{
                wx.uploadFile({
    	      url: "https://xxxx/common/upload",
                  filePath: v,
                  name: "file",
                  formData: {},
                  success: result => {
                    let url = JSON.parse(result.data);
                    arr.push(url.resultData)
                    this.setData({
                      imgList: arr,
                    })
                  }
                })
              })
            }
          });
        }
      }
      //卸载页面的时候必须要清除之前的全局arr防止出现不必要的bug
      onUnload(){
        arr.length = 0;
      }
    
      //删除图片 点击❌删除
      delImg(e) {
        const index = e.currentTarget.dataset.index;
        let chooseImage = this.data.imgList;
        chooseImage.splice(index, 1);
        this.setData({
          imgList: chooseImage
        })
      },
      // 放大图片 点击图片实现预览
      viewImg(e) {
        const index = e.currentTarget.dataset.index;
        const firstImg = this.data.imgList[index]
        console.log(index, firstImg, this.data.imgList)
        wx.previewImage({
          current: firstImg, // 当前显示图片的http链接
          urls: this.data.imgList // 需要预览的图片http链接列表
        })
      },
    
    <view class="upload_img">
            <view class="header">
              <view>上传图片</view>
              <text>(最多三张)</text>
            </view>
            <view class="img_container">
             
              <view class="img_main" wx:for="{{imgList}}" wx:key="*this" bindtap="viewImg" data-index="{{index}}">
                <image src="{{item}}"></image>
                <view class="icon" catchtap="delImg" data-index="{{index}}">
                ×
                </view>
              </view>
               <view class="img_upload" bindtap="handleUploadimg" wx:if="{{imgList.length !== 3}}">
                <image src="/assets/images/fankui_addphoto.png" style="margin-left:15rpx;"></image>
             </view>
     </view>
    
    .upload_img {
      margin-top: 15rpx;
      height: 570rpx;
      font-size: 28rpx;
    	padding:32rpx;
      background: rgba(255, 255, 255, 1);
      color: #333;
    	position: relative;
    }
    
    .upload_img .header {
      display: flex;
    }
    
    .upload_img .header text {
      margin-left: 20rpx;
      font-size: 28rpx;
      color: #999;
    }
    .img_container {
      margin-top: 50rpx;
      display: flex;
    }
    
    .img_container .img_upload {
       200rpx;
      height: 200rpx;
    }
    
    .img_container .img_upload image {
       100%;
      height: 100%;
    }
    
    .img_main {
      position: relative;
      margin-left: 15rpx;
       200rpx;
      height: 200rpx;
    }
    
    .img_main image {
       100%;
      height: 100%;
    }
    
    .img_main .icon {
      position: absolute;
      top: 0;
      right: 0;
      z-index: 10;
       30rpx;
      height: 30rpx;
      background: red;
      color:#fff;
      text-align: center;
      line-height: 30rpx;
    }
    
    愿以往所学皆有所获
  • 相关阅读:
    EEPROM芯片AT2402驱动
    FPGA 状态机(FSM)的三段式推荐写法
    1602液晶驱动
    Bresenham快速画直线算法
    I2C总线驱动程序
    从数据库中取时间类型显示
    C# 页面关联类似模式窗口
    C# 页面javascript 页面跳转刷新
    网页有趣的时间显示控件
    DataSet
  • 原文地址:https://www.cnblogs.com/Azune/p/13025722.html
Copyright © 2020-2023  润新知