You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中如何正确检测Firebase Storage中的文件是否存在?

问题根因

你当前的写法存在逻辑错误:GetReferenceFromUrl 仅会在本地构造对应路径的存储引用对象,不会发起任何云端请求校验文件是否真实存在。只要你传入的存储路径格式合法,返回的引用对象永远不为null,所以无法用来判断文件是否存在。

正确实现方案

Firebase Storage 校验文件存在的标准实现是尝试获取目标文件的元数据,根据请求返回结果判断,示例代码如下:

// 先构造本地存储路径引用
StorageReference fileRef = storage.GetReferenceFromUrl($"gs://xxxxx-xxxxx-342352503.appspot.com/{fUser.UserId}");

// 异步请求云端元数据判断文件状态
fileRef.GetMetadataAsync().ContinueWith(task => {
    if (task.IsFaulted)
    {
        var storageError = task.Exception?.GetBaseException() as StorageException;
        // 错误码为ObjectNotFound代表文件确实不存在
        if (storageError != null && storageError.ErrorCode == StorageErrorCode.ObjectNotFound)
        {
            Debug.Log("File Not Exist");
        }
        else
        {
            // 其他错误场景:权限不足、网络异常等,可根据业务需求自行处理
            Debug.LogError($"校验文件失败:{storageError?.Message}");
        }
    }
    else if (task.IsCompletedSuccessfully)
    {
        Debug.Log("File Exists");
    }
});

注意事项

  • 提前配置Firebase Storage规则,开放对应路径的读权限,否则会因为权限不足返回错误,误判为文件不存在
  • 你也可以通过调用GetDownloadUrlAsync()获取下载链接的方式判断文件存在性,判断逻辑和获取元数据完全一致
  • 不要在Unity主线程同步等待异步任务结果,避免出现卡顿

内容的提问来源于stack exchange,提问作者JOYSON S T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:27:00