中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序圖片上傳功能怎么實現

發布時間:2022-05-05 16:14:35 來源:億速云 閱讀:241 作者:iii 欄目:開發技術

這篇文章主要介紹“微信小程序圖片上傳功能怎么實現”,在日常操作中,相信很多人在微信小程序圖片上傳功能怎么實現問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”微信小程序圖片上傳功能怎么實現”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

首先是靜態布局和樣式部分

.wxml代碼部分

<view class='load-img'>
    <view class='load-box'>
      <view class='img-item' wx:for="{{fileList}}" wx:key="index" >
        <image src="{{item.path}}" data-src="{{item}}" mode="aspectFill" data-list="{{fileList}}" bindtap=""></image>
        <icon class='icon' type="clear" size="20" color='#EF4444' catchtap='_onDelTab' data-idx="{{index}}" wx:if="{{!prevent}}"/>
      </view>
      <image class='img-add' bindtap='_addImg' wx:if="{{!prevent}}"></image>
    </view>
  </view>

.wxss代碼部分

/* 上傳圖片 */
.load-name {
    height: 80rpx;
    line-height: 80rpx;
    font-size: 30rpx;
  }
  .load-box {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
  }
  .img-item, .img-add {
    position: relative;
    width: 140rpx;
    height: 140rpx;
    margin: 20rpx;
  }
  .img-add {
    border: 1px solid #ccc;
  }
  .img-add:after{
    width: 1rpx;
    height: 50rpx;
    content: " ";
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    background-color: #ccc;
  }
  .img-add:before{
    position: absolute;
    top: 50%;
    right: 31%;
    width: 50rpx;
    height: 1rpx;
    content: " ";
    display: inline-block;
    background-color: #ccc;  
  }
  
  .img-item {
    margin-right: 20rpx;
  }
  .img-item image {
    width: 100%;
    height: 100%;
    border-radius: 10rpx;
  }
  .icon {
    position: absolute;
    top: 0;
    right: 0;
  }

以上這些基本代碼就可以完成圖片上傳,顯示,刪除等樣式布局

下面是js的部分,我已詳細備注~~~

先來看下完整的代碼

/**
 * 小程序圖片上傳
 * 組件接受參數
 * fileList  圖片數組
 * prevent 控制是否可新增
 * 方法
 * bindimageChange 選擇圖片后觸發
 * bindimageDel  刪除圖片后觸發
 * 
 */
const app = getApp();
Component({
  properties: {
    fileList: {
      type: Array
    },
    prevent: {
      type: Boolean,
      value: false
    }
  },
  data: {
    fileList: []
  },
  ready() {},
  methods: {
    // 點擊加號進入手機相冊,并進行圖片選擇
    _addImg() {
      let _this = this;
      // 此方法為微信小程序自帶api 詳情訪問https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html
      wx.chooseImage({
        count: 5,
        success(res) {
          //此處會返回圖片暫存路徑和文件大小
          const data = res.tempFiles;
          _this.setFile(data)
        }
      })
    },
    setFile (data) {
      // 將wx.chooseImage返回的數據進行擴展
      data.map((item, index) => {
        // 通過路徑截取文件后綴名
        const fileFormat = item.path.substring(item.path.lastIndexOf(".") + 1, item.path.length);
        // wx.getFileSystemManager()小程序文件管理器api,可以將通過文件路徑將其轉換成64編碼
        const fileManager = wx.getFileSystemManager();
        const base64 = fileManager.readFileSync(item.path, 'base64');
        item.fileContent = base64;
        item.fileSize = item.size;
        // 通過時間獲取隨機13位隨機數并且拼接文件后綴進行文件命名
        item.fileName = this.getFileName(13) + '.' + fileFormat;
        // 此處操作是用來進行選中圖片顯示的,只有這樣拼接才能顯示base64編碼的路徑
        item.path = `data:image/${fileFormat};base64,${base64}`;;
      })
      this.setData({ 
        fileList: this.data.fileList.concat(data)
      });
      // 此處操作是用來將獲取到的文件數據傳遞給父組件進行文件上傳
      this.triggerEvent('imageChange', this.data.fileList)
    },
    // 隨機生成文件名
    getFileName (m) {
      m = m > 13 ? 13 : m;
      var num = new Date().getTime();
      return num.toString().substring(13 - m);
    },
    點擊進行圖片刪除
    _onDelTab(e) {
      // 獲取圖片索引
      let idx = e.currentTarget.dataset.idx;
      let delFile = this.data.fileList[idx];
      console.log(delFile);
      this.data.fileList.splice(idx, 1);
      this.setData({
        fileList: this.data.fileList
      })
      this.triggerEvent('imageDel', delFile);
    }
})

代碼里對代碼的備注已經很明確了,大家仔細扒一下,根據的自己的項目進行相應的調整,基本上都是沒問題的,~~不要直接直接粘貼不復置,我是直接在我的項目中直接拿過來的代碼,直接粘貼復制肯定是不行的!!!~~

大家需要注意的是這里

微信小程序圖片上傳功能怎么實現

通常在真機上點擊選中圖片后wx.chooseImage方法中返回的文件路徑是wxfile:開頭的路徑,這樣的路徑想直接轉成base64,上面的方式是可以實現的,我也是查了很多資料才找到的解決辦法。

再一個需要注意的是image src屬性想顯示base64格式的圖片要進行字符串拼接才可以正常顯示如下圖

微信小程序圖片上傳功能怎么實現

到此,關于“微信小程序圖片上傳功能怎么實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌平区| 渭南市| 安化县| 邹城市| 镇远县| 彭山县| 定日县| 汝城县| 湘潭市| 藁城市| 合山市| 长海县| 河源市| 牙克石市| 含山县| 南召县| 南投县| 五莲县| 荔波县| 彭阳县| 昌吉市| 永吉县| 桦甸市| 阿拉善盟| 盘山县| 南京市| 南郑县| 双流县| 会东县| 甘泉县| 方城县| 分宜县| 林甸县| 莱西市| 闻喜县| 金沙县| 莲花县| 卢湾区| 吐鲁番市| 宣威市| 商丘市|