首頁 > 軟體

微信小程式實現上傳圖片小功能

2022-08-28 14:01:25

本文範例為大家分享了微信小程式實現上傳圖片的具體程式碼,供大家參考,具體內容如下

用到的api
wx.chooseMedia(); 用於拍攝或從手機相簿中選擇圖片或視訊

功能:點選上傳圖片,可多選,或者拍照上傳;點選圖片放大檢視;長按圖片刪除

效果圖

json裡面參照weui的元件uploader

{
  "navigationBarTitleText": "評價工單",
  "usingComponents": {
    "mp-uploader": "weui-miniprogram/uploader/uploader",
    "mp-cells": "weui-miniprogram/cells/cells",
    "mp-cell": "weui-miniprogram/cell/cell"
  }
}

wxml

<view class="weui-uploader">
     <view class="img-v weui-uploader__bd">
        <view class='pic' wx:for="{{technicianAssessPicture}}" wx:for-item="item" wx:key="*this">
            <image class='weui-uploader__img ' src="{{item}}" data-index="{{index}}" mode="aspectFill" bindlongpress="deleteTechnician" bindtap="previewTechnician">
            </image>
        </view>
        <view class="weui-uploader__input-box pic" bindtap="technicianImg"> </view>
     </view>
</view>

js

data:(){
    technicianAssessPicture: [], // 技師圖片
}
// 上傳技師圖片
  technicianImg: function (e) {
    var that = this;
    var technicianAssessPicture = this.data.technicianAssessPicture;
    if (technicianAssessPicture.length >= 9) {
      this.setData({
        lenMore: 1
      });
      setTimeout(function () {
        that.setData({
          lenMore: 0
        });
      }, 2500);
      return false;
    }
    wx.chooseMedia({
      count: 9,   // 預設9
      mediaType: ['image','video'],   // 檔案型別
      // image    只能拍攝圖片或從相簿選擇圖片    
      // video    只能拍攝視訊或從相簿選擇視訊
      
      // sizeType: ['original', 'compressed'],  //所選的圖片的尺寸  original原圖,compressed壓縮圖
      // 僅對 mediaType 為 image 時有效,是否壓縮所選檔案
      
      sourceType: ['album', 'camera'],  //圖片和視訊選擇的來源
      maxDuration: 30,   //  拍攝視訊最長拍攝時間,單位秒。時間範圍為 3s 至 60s 之間。不限制相簿。
      camera: 'back',    // 僅在 sourceType 為 camera 時生效,使用前置或後置攝像頭
      //  back    使用後置攝像頭;front    使用前置攝像頭
      success: function (res) {
        var tempFilePaths = res.tempFiles;
        var technicianAssessPicture = that.data.technicianAssessPicture;
        for (var i = 0; i < tempFilePaths.length; i++) {
          if (technicianAssessPicture.length >= 9) {
            that.setData({
              technicianAssessPicture: technicianAssessPicture
            });
            return false;
          } else {
            const tempFilePaths1 = tempFilePaths.map(v=>v.tempFilePath)
            //   tempFilePaths資料是json陣列,我們需要的是普通陣列需要處理一下
            technicianAssessPicture.push(tempFilePaths1[i]);
          }
        }
        that.setData({
          technicianAssessPicture: technicianAssessPicture
        });
        console.log(that.data.technicianAssessPicture, 'hhhhhhhhhhhhhhhhhhhhh');
      }
    });
  },

處理後列印出來的資料

預覽,刪除

// 預覽圖片
previewTechnician: function (e) {
    //獲取當前圖片的下標
    var index = e.currentTarget.dataset.index;
    //所有圖片
    var technicianAssessPicture = this.data.technicianAssessPicture;
    wx.previewImage({
      //當前顯示圖片
      current: technicianAssessPicture[index],
      //所有圖片
      urls: technicianAssessPicture
    })
  },

  // 長按刪除
  deleteTechnician: function (e) {
    var that = this;
    var technicianAssessPicture = that.data.technicianAssessPicture;
    var index = e.currentTarget.dataset.index;    //   獲取當前長按圖片下標
    wx.showModal({
      // cancelColor: 'cancelColor',
      title: '提示',
      content: '確定要刪除此圖片嗎?',
      success: function (res) {
        if (res.confirm) {
          console.log('確定');
          technicianAssessPicture.splice(index, 1);
        } else if (res.cancel) {
          console.log('取消');
          return false;
        }
        that.setData({
          technicianAssessPicture
        })
      }
    })
},

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com