uniapp微信小程序解决open-type获取用户头像,返回临时路径问题!

解决 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

上传到服务器
  • 例:上传 oss
const result = await this.uploadFile(avatarUrl);
let ossId = result.ossId; // 返回 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
  • 这种方式,先转成 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);
	}
});
  • 16
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值