常見問題

uniapp 獲取用戶頭像 存起來

常見問題

2544

字體:

如果你想在 uni-app 中實現(xiàn)獲取用戶頭像并保存下來,可以先在頁面中添加一個圖片組件,用于展示用戶的頭像。然后,給用戶選擇上傳頭像的按鈕綁定一個事件方法 onChooseAvatar,用于調用微信小程序的 API 實現(xiàn)獲取用戶上傳的頭像并展示:

<template>
  <view>
    <image mode="aspectFill" :src="avatarUrl" />
    <button @tap="onChooseAvatar">選擇頭像</button>
  </view>
</template>
<script>
  export default {
    data() {
      return {
        avatarUrl: '', // 用戶頭像鏈接
      }
    },
    methods: {
      onChooseAvatar() {
        uni.chooseImage({
          count: 1, // 用戶最多只能選擇一個文件(即頭像)
          success: (res) => {
            // 獲得選擇的本地文件路徑
            let filePath = res.tempFilePaths[0]
            // 將文件轉為 base64 編碼的數(shù)據(jù)
            uni.getFileSystemManager().readFile({
              filePath: filePath,
              encoding: 'base64',
              success: (result) => {
                // 將頭像的 base64 數(shù)據(jù)保存到本地緩存中
                uni.setStorage({
                  key: 'avatarUrl',
                  data: result.data,
                  success: () => {
                    // 將頭像的 https:// 開頭的鏈接保存到 data 中,用于圖片組件展示
                    this.avatarUrl = 'data:image/png;base64,' + result.data
                  }
                })
              }
            })
          }
        })
      },
    },
    onLoad() {
      // 在 onLoad 鉤子函數(shù)中嘗試從本地緩存中獲取頭像信息
      uni.getStorage({
        key: 'avatarUrl',
        success(res) {
          // 如果緩存中有頭像信息,就將鏈接賦值給 data 中的 avatarUrl 字段,用于圖片展示
          if (res.data) {
            this.avatarUrl = 'data:image/png;base64,' + res.data
          }
        }
      })
    }
  }
</script>

在代碼中,onChooseAvatar 方法用于調用 uni.chooseImage API 來讓用戶從相冊或拍照選擇上傳頭像圖片,并將文件轉為 base64 編碼。然后,再將頭像的 base64 數(shù)據(jù)通過 uni.setStorage 方法保存到本地緩存中,這樣可以避免每次進入頁面都要重新選擇頭像。最后,將頭像的 https:// 開頭的鏈接賦值給 data 中的 avatarUrl 字段,用于圖片組件展示。在 onLoad 鉤子函數(shù)中,嘗試從本地緩存中獲取頭像信息,若緩存中有頭像信息,則在頁面加載時將頭像鏈接賦值給 data 中的 avatarUrl 字段,讓圖片組件展示用戶的頭像。

[聲明]原創(chuàng)不易,請轉發(fā)者備注下文章來源(hbsjsd.cn)【速建時代】。