收藏
回答

小程序端调用wx.cloud.uploadfile bug

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 工具 wxa64521f00c08d76c 2.3.0

- 当前 Bug 的表现(可附上截图)

在小程序端调用相同路径进行覆盖写时,并未进行覆盖写,而是使用之前写入的文件

- 预期表现

正常情况下 按照官网提供api,对相同路径进行上传,则会进行覆盖写操作,比如对于图片内容,应当是将流数据从文件开头进行写入,现在猜测的情况可能是对同一路径上传的时候生成了一个文件副本而错误的将文件指向了原文件,具体情况不知

- 复现路径

function ui(){
      return new Promise(function(resolve,reject){
        for (var i = 0; i < dbarr.length; i++) {
          const db = wx.cloud.database();
          var filePath = dbarr[i];
          var cloudPath = 'userimg/'+bn.data.userid+'/img'+i+ '.png';//这里是测试片段
          wx.cloud.uploadFile({
            cloudPath,
            filePath,
            success: res => {
              var h = res.fileID;
              update.push(h);
              // console.log('[上传文件] 成功:', res);
              if(update.length==dbarr.length){
                resolve(1);
              }
            },
            fail: e => {
              console.error('[上传文件] 失败:', e)
              wx.showToast({
                icon: 'none',
                title: '上传失败',
              })
            },
            complete: () => {
            }
          })
        }
 
      });
function ui(){
      return new Promise(function(resolve,reject){
        for (var i = 0; i < dbarr.length; i++) {
          const db = wx.cloud.database();
          var filePath = dbarr[i];
          var cloudPath = 'userimg/'+bn.data.userid+'/img'+i+2+ '.png'; //这里是测试片段
          wx.cloud.uploadFile({
            cloudPath,
            filePath,
            success: res => {
              var h = res.fileID;
              update.push(h);
              // console.log('[上传文件] 成功:', res);
              if(update.length==dbarr.length){
                resolve(1);
              }
            },
            fail: e => {
              console.error('[上传文件] 失败:', e)
              wx.showToast({
                icon: 'none',
                title: '上传失败',
              })
            },
            complete: () => {
 
            }
          })
        }
 
      })

- 提供一个最简复现 Demo

可以将以上函数直接调用

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

4 个回答

  • 2018-10-11

    在官方给的测试demo里最后使用的是临时文件路径构造的全局变量来进行的图片预览,而没有使用res.fileId来进行展示,不知道是不是也是这个原因

    2018-10-11
    有用 1
    回复
  • 神经蛙
    神经蛙
    2021-01-10

    过几分钟就自动刷新了 有缓存

    2021-01-10
    有用
    回复
  • 宇众不同
    宇众不同
    2018-11-29

    同问,需要覆盖原文件,显示上传成功,不过没覆盖

    2018-11-29
    有用
    回复
  • 攀爬
    攀爬
    2018-10-12

    我也遇到同样的问题,折磨我两天。用临时文件路径预览没问题,但容易被清除吧,云存储上的文件又是之前的。哎,郁闷啊

    2018-10-12
    有用
    回复 2
    • 2018-10-12

      我是因为用户图片展示必须要一个顺序所以得用相同的名字,结果现在整的只能每次提交随机字符串命名的图片再直接then插入数据库。。。。麻烦很多

      2018-10-12
      回复
    • 攀爬
      攀爬
      2018-10-13

      我也是如此,不想浪费太多空间,因此是固定三张照片,每次都覆盖。用随机命名,管理起来太麻烦了

      2018-10-13
      回复
登录 后发表内容