【问题标题】:FirebaseError: Firebase Storage: An unknown error occurred, please check the error payload for server responseFirebaseError:Firebase 存储:发生未知错误,请检查错误有效负载以获取服务器响应
【发布时间】:2021-12-13 23:39:56
【问题描述】:

我正在尝试使用 Flutter Web 将图像上传到 Firebase 存储。我在网上关注了很多关于如何解决这个问题的教程,但我最终遇到了同样的错误。

这是我的上传代码

  pickImageFromGallery() async {
    imageFile = await ImagePickerWeb.getImageInfo;
    setState(() {
      _image = imageFile!.fileName!;
    });
  }

  Future<void> uploadFile(
      MediaInfo mediaInfo, String ref, String fileName) async {
    try {
      String mimeType = mime(path.basename(mediaInfo.fileName!))!;

      final String extension = extensionFromMime(mimeType)!;

      var metadata = fb.UploadMetadata(
        contentType: mimeType,
      );

      fb.StorageReference storageReference =
          fb.storage().ref('images').child('$fileName.$extension');

      fb.UploadTaskSnapshot uploadTaskSnapshot =
          await storageReference.put(mediaInfo.data, metadata).future;

      Uri imageUri = await uploadTaskSnapshot.ref.getDownloadURL();
      setState(() {
        _imageURL = imageUri.toString();
      });
    } catch (e) {
      setState(() {
        _imageURL = e.toString();
      });
    }
  }

这是我的公共访问存储规则

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

这是我得到的错误

FirebaseError: Firebase Storage: An unknown error occurred, please check the error payload for server response.
{
  "error": {
    "code": 404,
    "message": "Not Found."
  }
} (storage/unknown)

我已经在网上尝试了所有似乎是解决方案的方法,但是对于这个问题没有确切的解决方案。请帮我找出可能是什么问题。

我正在使用 Flutter Web,以及以下软件包: 火力基地, 小路, image_picker_web, mime_type

编辑:工作代码

问题似乎出在 StorageReference 上。它曾经编辑为以下内容:

fb.StorageReference storageReference = fb.storage().refFromURL('gs://storageBucket/').child('$fileName.$extension');

将“storageBucket”替换为您在 Firebase 存储中显示的 storageBucket 名称

【问题讨论】:

  • 嘿,您找到解决方案了吗?也在处理它
  • 不,我还没有成功。我已经尝试了我在网上看到的所有内容,但似乎没有任何效果。您是否检查过您的 storageBucket 名称,如下面的答案所述? @Noobdeveloper
  • 由于某种原因它终于奏效了。我使用了 refFromUrl,如上面的编辑所示。 @Noobdeveloper

标签: flutter firebase-storage flutter-web


【解决方案1】:

我遇到了同样的错误。 当路径无法到达存储桶时会发生这种情况,我发现这意味着“404 未找到”。检查 firebaseConfig 中 storageBucket 中的存储桶名称。就我而言,我使用的是 Dotenv,并在双引号后留了一个空格。 Dotenv 正在将其转换为 "" 双引号。

您可以在 Firebase 存储控制台中查看存储分区名称。您不需要开头的“gs://”或结尾的“/”。只需检查名称。如果您使用的是 Dotenv,请注意空格。

【讨论】:

  • 谢谢@WaraoShikyo。我检查了我的存储桶 url,但一切似乎都很好。正如您所提到的,我没有任何额外的空格或“/”。我只有网址。我什至尝试使用 refFromURL,但仍然没有运气。如果还有什么我可以尝试的,请告诉我。
猜你喜欢
  • 2021-12-31
  • 2020-06-28
  • 2023-02-02
  • 2022-11-24
  • 2021-06-06
  • 2021-11-04
  • 2019-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多