收藏
回答

云函数中调用cloud.uploadFile()返回值为null

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 wx44852d107ed1f391 cloud1-3glxk9kef6a2606d 2.14.1

云函数:

exports.main = async (event, context) => {
  const  wxContext = cloud.getWXContext()
  const  file = event.detail.file;
  var  fileID = []

  file.forEach(element => {
    var  name = 'ershoujiaoyi/good/_' + wxContext.openid  + '_' + String(Math.random()) + '.jpg'
    cloud.uploadFile({
      cloudPath: name,
      fileContent: element.url,
      successres => {
        console.log('上传成功:',res)
        fileID = [...fileID, res.fileID]
      },
      failerr => {
        console.log('Error:', err);
        return  err
      }
    });
  });
  console.log('Complete:',fileID)
  return  fileID
}


云函数本地调试:


调用:

wx.cloud.callFunction({
      name:'uploadGoodImage',
      data:{
        detail:event.detail
      },
      success:res=>{
        console.log(res)
        this.setData({
          fileID:res.result
        })
      },
      fail:err=>{
        console.log(err)
      },
      complete:_=>{
        wx.hideLoading()
      }
    })


控制台输出:

新人小程序求教,如有愚钝之处,烦请指教,在此先行谢过。

回答关注问题邀请回答
收藏

2 个回答

  • 跨商通
    跨商通
    2022-04-07

    1、没有await的,大概率是异步原因。

    2、云函数里尽量不要用forEach,用for()

    for(let i=0;i<file.length;i++){
      let res = await cloud.uploadFile()
      fileIDs = [...fileIDs, res.fileID]
    }
    
    
    2022-04-07
    有用 1
    回复 4
    • TearsDon'tFall
      TearsDon'tFall
      2022-04-07
      非常感谢,我有时间就修改尝试一下!能稍微说说foreach改用for循环原因吗?
      2022-04-07
      回复
    • 跨商通
      跨商通
      2022-04-07回复TearsDon'tFall
      经典问题,建议百度forEach和async,无数答案。
      2022-04-07
      1
      回复
    • TearsDon'tFall
      TearsDon'tFall
      2022-04-08
      你好,我尝试了一下,但这似乎没有解决全部问题,值得注意的是:我在cloud.uploadFile执行之后的success回调中输出了一些信息,但在云函数本地调试的控制台中并没有输出,也没有执行fail回调的错误信息处理,但函数执行的末尾的输出却正常输出了,实在让我十分。如有头绪,还请多指教。
      2022-04-08
      回复
    • 跨商通
      跨商通
      2022-04-08回复TearsDon'tFall
      所以我给你写的代码是白写的了。。。你需要学习一下async/await的用法。
      2022-04-08
      1
      回复
  • 雨
    2023-07-02

    fileID是固定,没必要这么返回,uploadFile是异步处理,没必要await,云函数3s机制,否则报out time after 3s

    2023-07-02
    有用
    回复
登录 后发表内容
问题标签