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

Flutter中FirebaseStorage调用getDownloadURL()报错:无App Check令牌及对象不存在

问题分析与解决

核心错误原因

你代码里的ref.putFile(image);是异步操作,但未使用await等待上传完成就直接调用getDownloadURL()。此时文件还未完全上传至Firebase Storage,因此触发object-not-found错误,导致后续Firestore写入流程失败。

No App Check token for request属于非致命警告,因你未启用App Check,不影响核心功能,可忽略。

修正后的代码

final ref = FirebaseStorage.instance
        .ref()
        .child('user_image')
        .child('${userCredential.user?.uid}.jpg');
// 等待文件上传完成后再执行后续操作
await ref.putFile(image);
final url = await ref.getDownloadURL();

await FirebaseFirestore.instance
        .collection('users')
        .doc(userCredential.user!.uid)
        .set({'username': username, 'email': email, 'image_url': url});

补充说明

  • putFile()返回UploadTask对象,必须通过await等待任务完成,才能确保文件已成功存储到指定路径。
  • 若需监控上传进度,可利用UploadTask的监听功能:
    final uploadTask = ref.putFile(image);
    uploadTask.snapshotEvents.listen((taskSnapshot) {
      final progress = (taskSnapshot.bytesTransferred / taskSnapshot.totalBytes) * 100;
      print('上传进度:$progress%');
    });
    await uploadTask;
    

内容的提问来源于stack exchange,提问作者aabiro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:22:04