解决 open-type 为 chooseAvatar,返回临时路径问题
文章目录
解决 open-type 为 chooseAvatar,返回临时路径问题
基于微信小程序获取头像昵称规则调整后,当小程序需要让用户完善个人资料时,可以通过微信提供的头像昵称填写能力快速完善 微信小程序 通过 button
按钮设置 open-type 为 chooseAvatar
时,可以快速获取用户头像;官方文档
效果图
Demo
< button class = " avatar-box" open-type = " chooseAvatar" @chooseavatar = " onChooseAvatarTap" >
< image class = " avatar" :src = " avatarUrl" mode = " aspectFill" > </ image>
</ button>
async onChooseAvatarTap ( e ) {
console. log ( '获取用户头像:' , e) ;
const { avatarUrl } = e. detail;
this . avatarUrl = avatarUrl;
} ,
获取头像回调数据结构效果图
解决方式
推荐方式:直接上传到服务器
,根据个人所需 uploadfile
上传到服务器
const result = await this . uploadFile ( avatarUrl) ;
let ossId = result. ossId;
uploadFile ( url ) {
return new Promise ( ( resolve, reject ) => {
uni. uploadFile ( {
url : 'xxx' ,
filePath : url,
name : 'file' ,
header : {
} ,
success : ( res ) => {
resolve ( res. data)
} ,
fail : ( res ) => {
reject ( res) ;
}
} ) ;
} )
}
转base64
const fileSystemManager = uni. getFileSystemManager ( ) ;
fileSystemManager. readFile ( {
filePath : avatarUrl,
encoding : 'base64' ,
success : ( res ) => {
const base64Data = res. data;
let tmpAvatarUrl = ` data:image/jpeg;base64, ${ base64Data} ` ;
console. log ( 'Base64格式的头像数据:' , tmpAvatarUrl) ;
} ,
fail : ( error ) => {
console. error ( '读取文件失败:' , error) ;
}
} ) ;