firebase - 无法将 Storage Firebase 映像正确链接到 Cloud Firestore
问题描述
我不明白为什么我无法链接并将 URL 发送到 cloud firestore 集合文档图像在存储中正确拾取但无法在 cloud firestore db 中获取 URL 这是我的代码:
bool isLoading = false;
var firebaseUser = FirebaseAuth.instance.currentUser;
Future uploadImage(BuildContext context) async {
String fileName = basename(_imageFile.path);
Reference firebaseStorageRef =
FirebaseStorage.instance.ref().child('uploads/$fileName');
UploadTask uploadTask = firebaseStorageRef.putFile(_imageFile);
TaskSnapshot taskSnapshot = await uploadTask.whenComplete(() => null);
if (taskSnapshot == null) {
final String downloadUrl =
await taskSnapshot.ref.getDownloadURL();
await FirebaseFirestore.instance.doc(firebaseUser.uid)
.collection("influncerUser")
.add({"imageUrl": downloadUrl,});
setState(() {
isLoading = true;
});
}
}
解决方案
首先,为什么要使用if (taskSnapshot == null)
?如果 taskSnapshot 为 null,则无法获取下载 url,因此请将其删除。
其次,更喜欢使用onComplete
而不是 .whenComplete(() => null)
Future uploadImage(BuildContext context) async {
String fileName = basename(_imageFile.path);
Reference firebaseStorageRef =
FirebaseStorage.instance.ref().child('uploads/$fileName');
UploadTask uploadTask = firebaseStorageRef.putFile(_imageFile);
// use onComplete to await when the doc has been pushed.
TaskSnapshot taskSnapshot = await uploadTask.onComplete;
final String downloadUrl = await taskSnapshot.ref.getDownloadURL();
await FirebaseFirestore.instance.doc(firebaseUser.uid)
.collection("influncerUser")
.add({"imageUrl": downloadUrl,});
setState(() => isLoading = true);
}
推荐阅读
- python - np.linalg.norm:“在 sqrt 中遇到无效值”
- vba - 基于cell vale的VBA粘贴
- c# - EF如何附加实体
- c# - COM 类中的字符串数组属性并从 VBA 设置它
- javascript - 根据控制器返回的属性捕获 ajax 响应
- javascript - React-Redux,调度函数时,“未捕获的 TypeError 不是函数”
- android - 如何将 ImageView 转换为文件 imageFile
- python - 按长度和最后 N 个字符对字符串列表进行排序
- mysql - 数据库查询在生产与测试中执行较慢,在同一台服务器上,相同的数据库结构
- vuejs2 - 我想如何获得复选框的值?