uni-app 云空间未使用却显示存储下载超量 个人中心页面uni-id-pages上传头像后无法预览 云存储里也不能预览下载

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app 云空间未使用却显示存储下载超量 个人中心页面uni-id-pages上传头像后无法预览 云存储里也不能预览下载

产品分类

uniCloud/App

操作步骤

无法使用云存储下载或者预览功能,引入的uni-id-pages组件,里面的个人中心页面,头像可以进行上传,裁切,但是裁切点击确定后,页面不显示头像,提示更新成功。

uploadAvatarImg(res) {  
    // #ifdef MP-WEIXIN  
    return false // 微信小程序走 bindchooseavatar方法  
    // #endif  

    // #ifndef MP-WEIXIN  
    if(!this.hasLogin){  
        return uni.navigateTo({  
            url:'/uni_modules/uni-id-pages/pages/login/login-withoutpwd'  
        })  
    }  
    const crop = {  
        quality: 100,  
        width: 600,  
        height: 600,  
        resize: true  
    };  
    uni.chooseImage({  
        count: 1,  
        crop,  
        success: async (res) => {  
            console.log('img',res);  
            let tempFile = res.tempFiles[0],  
                avatar_file = {  
                    // #ifdef H5  
                    extname: tempFile.name.split('.')[tempFile.name.split('.').length - 1],  
                    // #endif  
                    // #ifndef H5  
                    extname: tempFile.path.split('.')[tempFile.path.split('.').length - 1]  
                    // #endif  
                },  
                filePath = res.tempFilePaths[0]  
                console.log('file',filePath);  

            //非app端剪裁头像,app端用内置的原生裁剪  
            // #ifdef H5  
            if (!this.isPC) {  
                filePath = await new Promise((callback) => {  
                    uni.navigateTo({  
                        url: '/uni_modules/uni-id-pages/pages/userinfo/cropImage/cropImage?path=' +  
                            filePath + `&options=${JSON.stringify(crop)}`,  
                        animationType: "fade-in",  
                        events: {  
                            success: url => {  
                                callback(url)  
                            }  
                        },  
                        complete(e) {  
                            console.log(e);  
                        }  
                    });  
                })  
            }  
            // #endif  

            let cloudPath = this.userInfo._id + '/' + Date.now()+ '.' + avatar_file.extname  
            avatar_file.name = cloudPath  
            uni.showLoading({  
                title: "更新中",  
                mask: true  
            });  
            console.log('filepath',filePath);  
            console.log('cloudpaht',cloudPath);  

            let {  
                fileID  
            } = await uniCloud.uploadFile({  
                filePath,  
                cloudPath,  
                cloudPathAsRealPath: true, // 阿里云支持云端文件夹路径时,需要写这个属性  
                onUploadProgress: (progressEvent) => {  
                  console.log(progressEvent);  

                }  
            });  
            console.log('fileId',fileID);  
            avatar_file.url = fileID  
            uni.hideLoading()  
            this.setAvatarFile(avatar_file)  
        }  
    })  
    // #endif

预期结果

云存储下载和预览可以正常使用

实际结果

云存储下载和预览无法正常使用

bug描述

最近都没有使用过云空间,却显示存储下载请求1.39万次,我查了1.1号-1.10号的下载曲线图,显示为0。请排查下原因,现在无法使用下载或者预览功能了。是直接引入的uni-id-pages组件,里面的个人中心页面,头像可以进行上传,裁切,但是裁切点击确定后,页面不显示头像,提示更新成功。查看了控制台报错:

img img img img img img

GET https://mp-95b7d2ee-1b76-41fe-8444-e7d92746f53d.cdn.bspapp.com/677f8a1721392984892a0d49/1736470848786.png net::ERR_NAME_NOT_RESOLVED

云存储数据库里有这个数据,但是也不能预览和下载。排查很多遍,觉得可能是因为存储下载超量,但是我最近没有使用过,并且曲线图里显示下载次数为0。麻烦看下原因,谢谢!


1 回复

针对你提到的两个问题,以下是可能的解决方案及代码示例。由于无法直接访问你的项目代码和环境,以下示例基于假设和通用实践。

问题一:uni-app 云空间未使用却显示存储下载超量

这个问题可能由于以下几个原因造成:

  1. 数据同步延迟:云空间的使用量统计可能存在延迟。
  2. 隐藏文件或日志:某些文件或日志可能自动上传至云空间,且不在常规的文件列表中显示。
  3. 其他应用的占用:如果你的云空间账号被多个应用共享,其他应用可能占用了空间。

解决方案

  • 检查云空间使用情况:登录云控制台,查看详细的文件列表和占用情况。
  • 清理不必要的文件:删除不再需要的文件以释放空间。

代码层面,你可以通过云函数来查询和管理云空间的使用情况:

// 云函数示例,用于查询云存储的使用情况
const cloud = require('wx-server-sdk');
cloud.init();

exports.main = async (event, context) => {
  const db = cloud.database();
  const _ = db.command;
  try {
    const result = await cloud.callFunction({
      name: 'cloudfiles',
      data: {},
    });
    console.log(result);
    return result;
  } catch (e) {
    console.error(e);
    return e;
  }
};

问题二:个人中心页面uni-id-pages上传头像后无法预览,云存储里也不能预览下载

这个问题可能由于以下几个原因造成:

  1. 文件上传失败:文件可能没有正确上传到云存储。
  2. 文件路径错误:预览时使用的文件路径不正确。
  3. 权限设置问题:云存储的权限设置可能阻止了预览和下载。

解决方案

  • 确保文件上传成功:检查文件上传的代码逻辑,确保文件正确上传到云存储。
  • 检查文件路径:确保预览时使用的文件路径与上传后的文件路径一致。
  • 设置正确的权限:在云控制台中设置云存储的权限,允许预览和下载。

代码层面,以下是一个简单的文件上传和预览的示例:

// 上传文件
uni.chooseImage({
  count: 1,
  success: (res) => {
    const filePath = res.tempFilePaths[0];
    uni.uploadFile({
      url: 'https://your-cloud-function-url', // 云函数地址
      filePath: filePath,
      name: 'file',
      success: (uploadFileRes) => {
        console.log('上传成功', uploadFileRes);
        // 更新头像路径到数据库或本地存储
        const avatarUrl = JSON.parse(uploadFileRes.data).fileID;
        // 预览头像
        uni.previewImage({
          urls: [avatarUrl],
        });
      },
    });
  },
});

请根据你的实际情况调整上述代码。希望这些示例能帮助你解决问题。

回到顶部