我是Firebase的新手,目前正在使用Firebase存储,并且已经成功上传了我的文件(问题不在这里).

问题在于获取上载文件的下载链接.

代码

    Reference ref = FirebaseStorage.instance.ref('userImages/${FirebaseAuth.instance.currentUser?.uid}');

    if(image != null){
      ref = ref.child(Uri.file(image!.path).pathSegments.last);
      var link = await ref.putFile(image!).snapshot.ref.getDownloadURL(); //this line generates error
      // or even link = await ref.getDownloadURL();
      ref = ref.parent!;
    }
    if(cover !=null){
      ref = ref.child(Uri.file(cover!.path).pathSegments.last);
     var link = await ref.putFile(cover!).snapshot.ref.getDownloadURL();
      ref = ref.root;

    }
E/StorageException(16989): StorageException has occurred.
E/StorageException(16989): Object does not exist at location.
E/StorageException(16989):  代码: -13010 HttpResult: 404
E/StorageException(16989): {  "error": {    "code": 404,    "message": "Not Found."  }}
E/StorageException(16989): java.io.IOException: {  "error": {    "code": 404,    "message": "Not Found."  }}

我认为推荐信指向了错误的地方,谢谢.

推荐答案

try 以下代码:

if(image != null){
      ref = ref.child(Uri.file(image!.path).pathSegments.last);
      await ref.putFile(image!);
      print(await ref.getDownloadURL());
      ref = ref.parent!;
    }

它是有效的,但有一件事我们应该关注:

在这里等是为了什么,不是没有必要吗?

但它能让代码起作用,我试过了.这是另一个问题!

Flutter相关问答推荐

如何在凌晨12点显示00:00(24小时格式)而不是在Flutter 中显示24:00

相同的Flutter 代码库,但Firebase登录适用于Web应用程序,但无法登录iOS应用程序

从超级应用程序启动时,Flutter 小应用程序中未加载资源

就像Flutter 中的头文件一样?

Flutter 翼future 建造者不断开火和重建.它在每次重建时都会生成一个新的随机数--我如何防止这种情况?

如果我使用搜索栏,如何在嵌套滚动视图中停止自动滚动?

如何在 VS Code 中启用 Flutter 运行/调试工具栏?

如何在列表视图生成器中显示图像

没有为类型 'Widget' 定义运算符 '[]' .try 定义运算符[]

我无法找到修复此错误的位置,指出无法使用静态访问来访问实例成员

在Flutter中为容器实现线性渐变背景动画

Flutter中如何实现带有变化图标的浮动操作按钮?

使用 riverpod 提供 GoRouter 实例的正确方法是什么?

如何格式化网址?

在 Flutter 中使用 HardwareKeyboard 时所有键都没有响应

如何在手势检测器中获得涟漪效应

如何制作两个显示相关内容且可编辑的文本字段?

主题:ThemeData() Flutter

既然我们已经有了 Flutter 的内置 setState,为什么还要在 Flutter 中使用 BloC 或 Provider?

从 Uint8List 或图像对象创建 InputImageData 用于 Google ML Kit 人脸检测