FirebaseError:Firebase 存储:发生未知错误,请检查错误负载以获取服务器响应
我正在尝试使用 Flutter Web 将图像上传到 Firebase Storage。我已在线上学习了许多有关如何操作的教程,但最终还是遇到了相同的错误。
这是我的上传代码
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 和以下软件包: firebase、 path、 image_picker_web、 mime_type
编辑:工作代码
问题似乎出在 StorageReference 上。修改如下后即可生效:
fb.StorageReference storageReference = fb.storage().refFromURL('gs://storageBucket/').child('$fileName.$extension');
将“storageBucket”替换为 Firebase Storage 中显示的 storageBucket 名称
我也遇到了这种情况,因为我没有更新 firebase 存储规则以允许我写入数据库
我遇到了同样的错误。 当路径无法到达存储桶时会发生这种情况,我发现这意味着“404 未找到”。检查 firebaseConfig 中 storageBucket 中的存储桶名称。就我而言,我使用的是 Dotenv,并在双引号后留了一个空格。 Dotenv 将其转换为“”双引号。
您可以在 Firebase 存储控制台中检查存储桶名称。您不需要开头的“gs://”或结尾的“/”。只需检查名称即可。如果您使用的是 Dotenv,请注意空格。
我出现此错误是因为当我将
REACT_APP_FIREBASE_STORAGE_BUCKET
变量从本地环境中使用的 .env 文件复制到我的托管服务 Netlify 时,我添加了引号(即,我输入了
'my.secret.url'
而不是
my.secret.url
。