FirebaseError: Firebase Storage:发生未知错误,请检查服务器响应的错误负载



我正在尝试使用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

EDIT: Working Code

问题似乎与StorageReference有关。一旦编辑成以下内容,它就可以工作了:

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

将'storageBucket'替换为Firebase Storage中显示的storageBucket名称

我也遇到过这种情况,因为我没有更新firebase存储规则以允许我写入数据库

我得到了同样的错误。当路径无法到达桶时就会发生这种情况,我发现这意味着"404未找到"。检查firebaseConfig中的storageBucket中的桶名。在我的例子中,我使用的是Dotenv,并在双引号后留了一个空格。多捷夫把它转换成";双引号

您可以在Firebase存储控制台中检查桶名。你不需要"gs://"在开头或"/"最后。看看名字就知道了。如果您正在使用Dotenv,请注意空格。

我得到了这个错误,因为当我从本地环境中使用的。env文件中复制REACT_APP_FIREBASE_STORAGE_BUCKET变量到我的托管服务netflix时,我包含了引号(即我输入'my.secret.url'而不是my.secret.url)。

相关内容

最新更新