收藏
回答

云开发上传的图片在真机测试时显示找不到是怎么回事?

关于微信小程序云开发我也是接触不久,所以可能会有一些低级错误,望谅解。我现在打算做一个能上传图片的发帖功能,然后看帖子的时候要能看到每个帖子可能附带的图片,按照网上教程上传图片到云开发的存储中(使用wx.cloud.uploadFile),将返回的路径结果push进数据库集合对应帖子的字段imagelist空集,例如‘imagelist’:[http://tmp/wxfc465a6849644c1f.o6zAJs48V7US_nMxWevh374HXQ4g.FCL7C7Tft3fM51f32aa9df243ceb64dc243c3d7a8803.jpg],这个网络地址我是先在选图片的wx.chooseImage中将data中的imagesList: res.tempFilePaths,还有data中的fP:res.tempFilePaths[0],然后在点击提交时,进行插入下面代码块的操作,这是我在网上看的图片上传的教程,接下来就是将imagelist用 云开发的add方法添加到数据库里,在数据库里imagelist就是上面那样,使用我也是从数据库读出来,使用wx:for遍历字段的imagelist属性,然后直接通过image标签显示。在开发者工具能顺利显示每个帖子附带的图片,可在使用开发者工具上的真机检测功能进行手机端检测时(我用的是华为荣耀8X),图片却没有显示,有报错显示找不到,GET http://tmp/wxfc465a6849644c1f.o6zAJs48V7US_nMxWevh374HXQ4g.FCL7C7Tft3fM51f32aa9df243ceb64dc243c(还有一段)... 404 not Found,可在开发工具是可以显示的,没有报错,不知道怎么回事,望前辈们替我解惑。

  let imagelist = this.data.imagesList;
    let filePath = this.data.fP;
    let timestamp = Date.parse(new Date());
    const cloudPath = timestamp + filePath.match(/\.[^.]+?$/)[0];
    wx.cloud.uploadFile({
      cloudPath,
      filePath,
      success: res => {
​
          imagelist = imagelist.concat(res.fileID)
        
        this.is_all_ok()
      },
      fail: err => {
        console.log(err)
      }


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

1 个回答

  • 李东bbsky
    李东bbsky
    2020-03-04
    加我微信:jishuzu360,远程教你怎么弄吧
    2020-03-04
    有用 1
    回复 2
    • 我们依然没有翅膀
      我们依然没有翅膀
      2020-03-04
      谢谢您,经过仔细检查发现是异步问题,我把上传图片代码块放在数据库添加字段代码块前面,以为能先上传图片成功的同时编辑最终的imagelist再存数据库,但实际还没上传图片就已经执行数据库添加了,它把原本wx.chooseImage中将data中的imagesList: res.tempFilePaths当做最终的imagelist存数据库了(没加上fileID),上传图片是在之后完成的,可能是因为wx.chooseImage生成的是本机路径所以能够在开发工具显示吧,现在已经能在真机测试中显示图片了,不过还是谢谢您的热心,祝生活愉快
      2020-03-04
      回复
    • by恩宠
      by恩宠
      发表于移动端
      2023-04-03
      请问您最后这个问题怎么解决的呢?我现在遇到了这个问题
      2023-04-03
      回复
登录 后发表内容
问题标签