【发布时间】: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