修复微信小程序获取头像的bug,微信小程序新版头像API使用

文章详细描述了在微信小程序中遇到的头像上传问题,即真机调试时无法保存头像到服务器和数据库。作者提供了使用wx.saveFile(或wx.getFileSystemManager.saveFile)保存临时文件,然后通过wx.uploadFile上传到服务器的解决方案。在Node.js后台,利用multer处理文件上传,并保存到指定目录,更新数据库。最后,文章提到了在小程序中更新头像URL以解决头像未立即刷新显示的问题。

接着我之前发布的一篇文章:微信小程序上传头像的临时路径,持久化保存到服务器与数据库(nodejs后台开发)_盒子猫君的博客-优快云博客

今天我就来解决掉之前的问题吧!

从之前的后台报错来看,获取到的tempFilePath值和avatarUrl的值相同,都是http://tmp,不过头像都已经上传成功了并存到了数据库。而在真机调试时,用户选择头像后,是无法保存到数据库和对应的文件夹中的。

经过分析后,原因是在微信小程序中,选择头像后会返回一个临时文件路径(tempFilePath)供开发者进行上传和保存操作。真机调试时,是无法直接访问和保存这个临时文件的,所以在该代码中直接读取tempFilePath可能会出现问题。

解决方案下面就有了:

使用wx.saveFile保存临时文件,并将保存的文件路径作为参数传递给wx.uploadFile进行上传操作:

onChooseAvatar(e) {
    const { avatarUrl } = e.detail

    wx.saveFile({
        tempFilePath: avatarUrl,
        success(res) {
            const savedFilePath = res.savedFilePath
            console.log("保存的头像文件路径:" + savedFilePath)

            // 上传保存的图片
            wx.uploadFile({
                url: config.apiUrl + '/api/avatarUrl',
                filePath: savedFilePath,
                name: 'file',
                formData: {
                    'openid': wx.getStorageSync('openid')
                },
                success(res) {
                    console.log('uploadFile响应数据:', res.data);
                    try {
                        const data = JSON.parse(res.data)
                        console.log('upload success');
                        console.log("成功获取到用户头像存入数据库:", data.path);
                        wx.showToast({
                            title: '头像上传成功',
                            icon: 'success',
  
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盒子猫君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值