uni-app 通过云函数uniCloud.deleteFile删除文件问题:在文件列表模式下文件存在,在文件夹模式下文件不存在,这是删成功了还是没删成功

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

uni-app 通过云函数uniCloud.deleteFile删除文件问题:在文件列表模式下文件存在,在文件夹模式下文件不存在,这是删成功了还是没删成功

示例代码:

【报Bug】通过云函数uniCloud.deleteFile删除文件,在文件列表模式下文件存在,在文件夹模式下文件不存在,哈哈,笑死我了(无奈的苦笑),这特么是删成功了还是没删成功

操作步骤:

【报Bug】通过云函数uniCloud.deleteFile删除文件,在文件列表模式下文件存在,在文件夹模式下文件不存在,哈哈,笑死我了(无奈的苦笑),这特么是删成功了还是没删成功

预期结果:

【报Bug】通过云函数uniCloud.deleteFile删除文件,在文件列表模式下文件存在,在文件夹模式下文件不存在,哈哈,笑死我了(无奈的苦笑),这特么是删成功了还是没删成功

实际结果:

【报Bug】通过云函数uniCloud.deleteFile删除文件,在文件列表模式下文件存在,在文件夹模式下文件不存在,哈哈,笑死我了(无奈的苦笑),这特么是删成功了还是没删成功

bug描述:

【报Bug】通过云函数uniCloud.deleteFile删除文件,在文件列表模式下文件存在,在文件夹模式下文件不存在,哈哈,笑死我了(无奈的苦笑),这特么是删成功了还是没删成功


4 回复

如果删除的是文件夹,文件夹列表模式会有延迟,阿里云会异步删除文件列表的数据


删除的是文件不是文件夹

回复 为人方正实诚: 提供下spaceId以及删除的文件id或文件链接

在使用uni-app的云函数uniCloud.deleteFile删除文件时,如果你遇到在文件列表模式下文件存在,但在文件夹模式下文件不存在的情况,这通常表明文件删除操作已经成功执行,但可能存在一些缓存或视图更新延迟的问题。下面是一些相关的代码案例和解释,帮助你更好地理解这一过程。

云函数代码示例

首先,确保你的云函数正确调用了uniCloud.deleteFile。以下是一个简单的云函数示例,用于删除指定路径的文件:

// 云函数入口文件
const cloud = require('wx-server-sdk');

cloud.init();

exports.main = async (event, context) => {
  const fileID = event.fileID; // 从客户端传递的文件ID
  try {
    const res = await uniCloud.deleteFile({
      fileID: fileID,
    });
    if (res.result) {
      return {
        success: true,
        message: '文件删除成功',
      };
    } else {
      return {
        success: false,
        message: '文件删除失败',
        error: res.error,
      };
    }
  } catch (error) {
    return {
      success: false,
      message: '文件删除过程中发生错误',
      error: error,
    };
  }
};

客户端调用示例

在客户端,你可以通过调用这个云函数来删除文件:

uniCloud.callFunction({
  name: 'deleteFile', // 云函数名称
  data: {
    fileID: 'your-file-id', // 要删除的文件ID
  },
  success: (res) => {
    if (res.result.success) {
      console.log(res.result.message);
      // 刷新文件列表或文件夹视图
      // 例如,重新获取文件列表或文件夹内容
      // refreshFileListOrFolder();
    } else {
      console.error(res.result.message, res.result.error);
    }
  },
  fail: (err) => {
    console.error('调用云函数失败', err);
  },
});

解释

  1. 文件删除成功:当uniCloud.deleteFile返回成功结果时,文件实际上已经从云存储中被删除。
  2. 视图更新:文件列表或文件夹视图可能不会立即更新,这取决于你的前端实现和云存储服务的缓存策略。你可以通过刷新视图来确保显示最新的文件状态。
  3. 错误处理:在云函数和客户端调用中,都进行了错误处理,以确保在删除文件过程中发生的任何错误都能被捕获并适当处理。

综上所述,如果你在文件列表模式下仍然看到文件,但在尝试访问或通过文件夹模式查看时文件不存在,这通常意味着文件已经被成功删除,但前端视图需要刷新以反映这一变化。

回到顶部